如何从python查找dll函数?

问题描述 投票:0回答:1

我正在尝试使用ctypes从python访问dll。但是找不到功能!简单的代码是这样的:

from ctypes import cdll
dll=cdll.LoadLibrary("SDK.dll")
SdkService=dll.SDK.Service()

和回溯错误:

Traceback (most recent call last):
  File "d:\Fold1\project\test.py", line 3, in <module>
    SdkService=dll.SDK.Service()
  File "C:\Users\Saeed\AppData\Local\Programs\Python\Python36\lib\ctypes\__init__.py", line 361, in __getattr__
    func = self.__getitem__(name)
  File "C:\Users\Saeed\AppData\Local\Programs\Python\Python36\lib\ctypes\__init__.py", line 366, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'SDK' not found

现在如何从python查找函数?或任何其他使用功能的计划?

python dll ctypes
1个回答
0
投票

您已经加载了SDK dll,因此不需要其他属性。

SDK.dll导出的名称是从ctypes.cdll.LoadLibrary()返回的对象的属性(CDLL class的实例),将其分配给名称CDLL

因此,如果dll导出名为SDK.dll的函数,则可以使用:

Service

请参阅dll.Service() 文档的Accessing functions from loaded dlls section

请考虑到ctypes期望DLL使用C函数导出声明。 C ++名称空间不会导出。您可能还正在处理使用仅Windows ctypes.cdll约定的DLL,此时您需要使用stdcall(假定函数默认返回ctypes.windll)或int(假定ctypes.oledll返回值)库加载程序。

© www.soinside.com 2019 - 2024. All rights reserved.