[問題] 編譯DLL

作者: swampni   2018-10-16 00:49:08
開發平台(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甚麼的其實也都不太懂
所以如果這是一個很蠢的問題還請各位海涵>_<
作者: Lipraxde (Lipraxde)   2018-10-16 01:10:00
不是有效的win32應用程式?那你給他64的幹啥
作者: uranusjr (←這人是超級笨蛋)   2018-10-16 07:58:00
你 Python 那邊是怎麼用這個 DLL 的?在大多數情況是不能把 MinGW binary 餵給 CPython, ABI 不一樣
作者: Lipraxde (Lipraxde)   2018-10-16 22:30:00
你的 python 是32還64?

Links booklink

Contact Us: admin [ a t ] ucptt.com