簡體   English   中英

Python C ++擴展名:符號未定義錯誤

[英]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.imodule.cpp文件,然后創建一個module_wrap.omodule.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.

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