作者gts2590 (我不是竹中人)
看板Python
标题[问题] call c++ dll
时间Tue Oct 7 20:20:06 2014
我刚学写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?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.43.187.102
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1412684409.A.B71.html
2F:→ LiloHuang: 开 CFF Explorer 来看 Export Directory 看函式名称 10/07 20:58
3F:→ LiloHuang: 有列出名字或 Ordinal 的就有机会透过 ctypes 来操作 10/07 21:00
4F:→ LiloHuang: 然而,如果函式被 name mangling 後就会比较尴尬一点 10/07 21:01
5F:→ LiloHuang: 最重要的还是先搞清楚,到底要操作的是不是叫 TestA 10/07 21:02
6F:→ uranusjr: 八成是 name mangling 的关系, 就看要怎麽拿到真名了 10/07 22:17
非常感谢两位,TestA真的被改掉了
我後来是用 getattr 去解决
只碰python不到一个礼拜,以後还请各位高手们多多指教了 <(_ _)>
※ 编辑: gts2590 (203.196.98.24), 10/08/2014 11:02:26