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