[英]python c++ extension: symbol not defined error
我有一個有效的c ++代碼,我想將其包裝到Windows XP和Python 2.7上的python模塊中。 我以前從未做過此事,因此我研究了Swig和distutils。
我創建了一個接口文件和一個setup.py並使用
python setup.py build_ext -c mingw32
該腳本創建一個module_wrap.cpp
從我module.i
和module.cpp
文件,然后創建一個module_wrap.o
和module.o
。 module.o
創建會為未使用的變量和不建議使用的char *創建一堆警告,但它似乎可以正常工作。 因為C ++代碼不是我的,所以我現在真的不想進入這些代碼。
最后一步是執行
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
我懂了
Cannot export init_module: symbol not defined
error: command 'g++' failed with exit status 1
我現在對此進行了很多搜索,但我找不到該問題的解決方案。 先前創建的_module.def
似乎嘗試導出此init,因為它包含
LIBRARY _module.pyd
EXPORTS
init_module
顯然這是行不通的,但我不知道為什么。 有人可以幫我從這里出去嗎?
我想到了。 問題是swig的(未發布)接口文件module.i
。 在那里,我將模塊命名為%module usemodule
,而在setup.py
我將模塊命名為name=module
。 這樣,swig創建了一個init_function,它與創建的模塊所期望的名稱不匹配。 最后:只是一個錯字...
仍然感謝您的支持!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.