我创建了一个简单的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。请帮忙。
干杯。
答案 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的初学者,它以这种方式为我工作,我可以在此之后继续我的脚本。 希望这有助于其他人。
干杯。