[问题] 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