2012-08-22 4 views
2

Windows에서 Python C++ 확장을 만들려고합니다. 내 문제는 swig 및 distutils를 사용한 후에도 .pyd 파일 (링크 오류)을 생성 할 수 없다는 것입니다. 아래는 내가 무슨 짓을 단계별로 단계 :내 Python C++ 확장 프로그램을 Windows에서 Swig와 Distutils를 사용하여 컴파일하기

는 마이크로 소프트 비주얼 스튜디오 2010에서 나는 클래스 아래 hello.c를 만들어 :

#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) 
{ 
} 

Hello.h :

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

그럼 내가 만들었습니다. 내가 HelloWorld.i

%module HelloWorld 

%{ 
#include "Hello.h" 
%} 

%include "Hello.h" 

가 그럼 난

012,351,641을 swigged 파일
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]) 

, 나는 명령 줄 Unfortuantely

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가 올바르게 작동하고 있다고 가정하므로 코드를 변경할 필요가 없습니다. 도와주세요! 감사합니다

답변

0

는 다음

모듈 1 = 확장 ('_하여 HelloWorld'소스 = [ '아래 hello.c를']) 시도