開發平台(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
→
10/16 01:10,
7年前
, 1F
10/16 01:10, 1F
因為我查到stackoverflow這篇
https://stackoverflow.com/questions/19849077/error-loading-dll-in-python-not-a-v
alid-win32-application
→
10/16 07:58,
7年前
, 2F
10/16 07:58, 2F
→
10/16 08:00,
7年前
, 3F
10/16 08:00, 3F
我在python那邊用的是numpy.ctypeslib.load_library
餵DLL給python應該是可行的,因為32bits的版本是可以運行的
後來我也試了用TDM-GCC64
就會報[WinError 1114]動態連結程式庫(DLL)初始化例行程序失敗。
查了一陣子好像也不太知道有甚麼解決辦法QQ
→
10/16 22:30,
7年前
, 4F
10/16 22:30, 4F
可以運行的是32的 2.7.11
但64的3.6就不行
我好像發現原因了
好像是我環境變數沒改到讓我沒有用到正確的g++或python去執行QQ
我真是白癡
也謝謝大家的幫助
※ 編輯: swampni (180.176.50.59), 10/17/2018 22:06:16