[問題] call c++ dll

作者: gts2590 (我不是竹中人)   2014-10-07 20:20:06
我剛學寫python不久,遇到了一個問題,想請教板上的高手們。
我目前手上有一個dll檔
裡面的function TestA(),有另一隻C++的程式可以用。
所以可以確定這隻dll檔裡有TestA()這個function
並且是可以work的
我想用python呼叫這個TestA()
以下為程式碼
from ctypes import cdll
dll1 = cdll.LoadLibrary( "TestFunction.dll");;
testResult = dll1.TestA();
在執行到最後一行的時候,出現錯誤
AttributeError: function 'TestA' not found
我有上網google過,發現有可能的原因是因為沒有 extern "C" _declspec(dllexport)
但是那隻dll的原始碼我拿不到,所以請想問板上的高手們,
遇到這種情況該如何做才能使python認識"TestA"這個function?
作者: LiloHuang (十年一刻)   2014-10-07 20:57:00
http://www.ntcore.com/exsuite.php 下載安裝後開 CFF Explorer 來看 Export Directory 看函式名稱有列出名字或 Ordinal 的就有機會透過 ctypes 來操作然而,如果函式被 name mangling 後就會比較尷尬一點最重要的還是先搞清楚,到底要操作的是不是叫 TestA
作者: uranusjr (←這人是超級笨蛋)   2014-10-07 22:17:00
八成是 name mangling 的關係, 就看要怎麼拿到真名了

Links booklink

Contact Us: admin [ a t ] ucptt.com