一个简单的python程序无法访问我的DLL

时间:2011-09-12 16:02:57

标签: python visual-c++ dll scripting mfc

我创建了一个简单的MFC .dll文件,我可以通过另一个MFC应用程序访问它。我试图使用Python 3.2.2做同样的事情,但在我加载我的库后,它没有检测到我的dll中的函数并给出如下错误:

    Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
  File "C:\Python32\lib\ctypes\__init__.py", line 353, in __getattr__
    func = self.__getitem__(name)
  File "C:\Python32\lib\ctypes\__init__.py", line 358, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'SayHello' not found

...

我试图找到一个简单的程序来使用Python访问我的MFC dll文件,但目前还没有成功。只是为了让每个人都知道,我已经阅读了ctypes并且一直在寻找很多工作。我的主要目标是使用Python作为脚本语言来与我的MFC C ++ DLL进行交互。我一直在阅读很多,而我能找到的最接近的是PythonWin。请帮忙。

干杯。

1 个答案:

答案 0 :(得分:0)

我能够抓住我的问题并解决了它。对于那些将来可能会有这种想法的人,我只想粘贴python脚本代码,以便在python脚本中访问您的函数。使用C ++函数的方法显然是在.dll文件中声明这一点。

extern "C" __declspec(dllexport) int SayHello(int strNo);

并且您的Python脚本应该是这样的:(在python脚本中访问c ++函数需要getattr()函数)

mydll = cdll.LoadLibrary("Location.dll")
hellofunc = getattr(mydll,'SayHello')
func2.restype = c_int
func2.argtypes = [c_int]
x = func2(34)
print(x)

...

如果有人认为我可能错了,请随时纠正我。我是Python的初学者,它以这种方式为我工作,我可以在此之后继续我的脚本。 希望这有助于其他人。

干杯。