2013-08-15 1 views
2

Windows XP 및 Python 2.7에서 파이썬 모듈로 포장하려는 작업 C++ 코드가 있습니다. 나는 결코 이것을 한 번도 해 본 적이 없으므로 나는 양과 분비물을 들여다 보았다. 파이썬 C++ 확장 : 기호 정의되지 않은 오류

나는 인터페이스 파일과 setup.py 및 스크립트 내 module.imodule.cpp 파일에서 module_wrap.cpp를 생성 한 다음 module_wrap.omodule.o를 생성

python setup.py build_ext -c mingw32 

을 사용하여 컴파일을 만들었습니다. module.o을 만들면 사용되지 않는 변수와 사용되지 않는 char *에 대한 경고 묶음이 만들어 지지만 제대로 작동하는 것 같습니다. C++ 코드는 제 것이 아니기 때문에 지금 당장 들어가고 싶지는 않습니다.

마지막 단계는 내가

Cannot export init_module: symbol not defined 
error: command 'g++' failed with exit status 1 

내가 지금까지 많이 봤 얻을
g++.exe -shared -s build\temp.win32-2.7\Release\module_wrap.o build\temp.win32-2.7\Release\module.o build\temp.win32-2.7\Release\_module.def -LC:\Programme\Python27\libs -LC:\Programme\Python27\PCbuild -lpython27 -o build\lib.win32-2.7\_module.pyd 

를 실행, 난 그냥이 문제에 대한 해결책을 찾을 수 없습니다. 그것은 분명히 문제가 해결되지 않는

LIBRARY _module.pyd 
EXPORTS 
init_module 

를 포함하고 있기 때문에 이전에 생성 _module.def이 초기화를 내보내려고하는 것 같다,하지만 난 왜 아무 생각이 없습니다. 누구든지 나를 도울 수 있습니까?

+0

은 C++에서 정의 된 init_module입니까? – doctorlove

+1

이 함수는 swig에서 정의해야합니다. 맞습니까? module_wrap.cpp는 그런 함수를 포함하지 않습니다. 편집 :이 동작이 어디에서 발생했는지 알 수 있습니까? – Dux

답변

1

나는 그것을 알아 냈다. 문제는 swig에 대한 (게시되지 않은) 인터페이스 파일 module.i입니다. 저기 모듈 %module usemodule, 반면 setup.py 모듈의 이름은 name=module 지명했다. 이 방법은 생성 된 모듈이 기대했던 이름과 일치하지 않는 init_function을 만들었습니다. 결국에는 오타가 있습니다.

그래도 감사합니다.

관련 문제