看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC & vc++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) eigen 問題(Question): 不知道在這個版問適不適當 我的目標是寫c++編譯成dll丟到python裡面去加速python的一些運算 但我目前遇到的問題是: 我只能用mingw的++編譯出32bits的DLL 沒有辦法用mingw64的g++編譯出64bits的DLL 64bits的編出來丟到python裡面就會報[winError 193] %1 不是有效的win32應用程式 所以後來我就載了visual studio 2017然後用vcvarsall.bat amd64 然後用cl編譯我的dll 雖然這樣就成功了,但是比起用g++的慢非常多,大概是10倍左右 所以想請問各位大大我可能做錯的地方在哪裡? 附上我編譯用的參數 g++: g++ -c -I.\eigen -O2 xxx.cpp g++ -o xxx.dll xxx.o cl:cl /LD /EHsc -I .\eigen /O2 "xxx.cpp" 補充說明(Supplement): 其實沒怎麼寫過c++ 對mingw甚麼的其實也都不太懂 所以如果這是一個很蠢的問題還請各位海涵>_< -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.50.59 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1539622151.A.860.html
Lipraxde: 不是有效的win32應用程式?那你給他64的幹啥10/16 01:10
因為我查到stackoverflow這篇 https://stackoverflow.com/questions/19849077/error-loading-dll-in-python-not-a-v alid-win32-application
uranusjr: 你 Python 那邊是怎麼用這個 DLL 的?在大多數情況是不10/16 07:58
uranusjr: 能把 MinGW binary 餵給 CPython, ABI 不一樣10/16 08:00
我在python那邊用的是numpy.ctypeslib.load_library 餵DLL給python應該是可行的,因為32bits的版本是可以運行的 後來我也試了用TDM-GCC64 就會報[WinError 1114]動態連結程式庫(DLL)初始化例行程序失敗。 查了一陣子好像也不太知道有甚麼解決辦法QQ
Lipraxde: 你的 python 是32還64?10/16 22:30
可以運行的是32的 2.7.11 但64的3.6就不行 我好像發現原因了 好像是我環境變數沒改到讓我沒有用到正確的g++或python去執行QQ 我真是白癡 也謝謝大家的幫助 ※ 編輯: swampni (180.176.50.59), 10/17/2018 22:06:16