簡體   English   中英

在Windows上使用Swig和Distutils獲取我的python c ++擴展進行編譯

[英]Getting my python c++ extension to compile using Swig and Distutils on Windows

我正在嘗試在Windows上創建python c ++擴展。 我的問題是,即使使用了swig和distutils,我似乎也無法生成.pyd文件(鏈接錯誤)。 以下是我的逐步操作:

在Microsoft Visual Studio 2010中,我創建了一個類Hello.cpp:

#include "StdAfx.h"
#include "Hello.h"
#include <iostream>
using namespace std;


Hello::Hello(void)
{
}

void Hello::greeting(void){
   cout<<"Hello World!!"<<endl;

}



Hello::~Hello(void)
{
}

您好:

      #pragma once
      class Hello
      {
         public:
            Hello(void);
            ~Hello(void);
            void greeting(void);
      };  

然后我創建了一個.i文件HelloWorld.i

%module HelloWorld

%{
#include "Hello.h"
%}

%include "Hello.h"

然后我着

swig -c++ -python -o Hello_wrap.cpp HelloWorld.i

這似乎已成功完成,生成了我期望的文件。 接下來,我創建了setup.py。

from distutils.core import setup, Extension

module1=Extension('HelloWorld', sources=['Hello.cpp'])

setup(name='Hello_Package', version='1.0', description='This is a demo', \
      ext_modules=[module1])

編寫完該文件后,切換到所有文件存儲在一起的目錄后,我進入了命令行

python setup.py build

不幸的是,這是我得到的錯誤

running build
running build_ext
building 'HelloWorld' extension
creating build
creating build\temp.win32-2.7
creating build\temp.win32-2.7\Release
c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W
3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\PC /TpHello.cpp /Fobuild\tem
p.win32-2.7\Release\Hello.obj
Hello.cpp
c:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE\xlocale(342) : warning C
4530: C++ exception handler used, but unwind semantics are not enabled. Specify
/EHsc
creating build\lib.win32-2.7
c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe /DLL /nologo /INCRE
MENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild /EXPORT:initHel
loWorld build\temp.win32-2.7\Release\Hello.obj /OUT:build\lib.win32-2.7\HelloWor
ld.pyd /IMPLIB:build\temp.win32-2.7\Release\HelloWorld.lib /MANIFESTFILE:build\t
emp.win32-2.7\Release\HelloWorld.pyd.manifest
LINK : error LNK2001: unresolved external symbol initHelloWorld
build\temp.win32-2.7\Release\HelloWorld.lib : fatal error LNK1120: 1 unresolved
externals
error: command '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\link.exe"'
failed with exit status 1120

該鏈接錯誤我該怎么辦? 我假設swig和distutils正常工作,所以我不必更改代碼。 請幫助! 謝謝

嘗試以下

module1 =擴展名('_HelloWorld',來源= ['Hello.cpp'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM