对不起,我的英文很糟糕。 所以。 我在Dev C++中编写简单的动态链接库。 它的工作很好。今天我导入这是我的python项目中的库。 动态链接库文件路径:lib/my_dll.dll
#Dialog箱 config.pyPython CDLL无法加载库2次
DLL_PATH = "lib/my_dll.dll"
main.py(config.py)进口
def my_func():
dll = CDLL(DLL_PATH)
return dll.func1()
于是我打开Python解释器和写这篇文章。
from main import *
a = my_func() #Its work nice so a == "c:\\Windows\\a.txt"
但我重复使用这个功能蟒蛇产生一个错误
OSErrror:[WinError 126] The specified module could not be found
感谢您的阅读!
提供DLL的完整路径。而且,返回一个以null结尾的字符串的函数最多也是可疑的。我也看不到如何代码可以返回一个字符串。你没有在任何地方指定restype。您应该只加载一次DLL。为什么你想一遍又一遍地加载它? – 2014-12-05 14:36:33
谢谢你的回答。这是DLL调用Windows Api文件选择对话框。在函数中没有问题。工作很好。我的基本工程目录c:\ Project。 C:\ Project目录有main.py,config.py和lib目录... lib目录有my_dll.dll。所以我调用my_dll.dll它返回我c_char_p(选定的路径)。 a = my_func()返回给我path.But再次调用此函数示例a = my_func()生成错误 – 2014-12-05 14:46:23
您需要设置'dll.func1.restype = c_char_p'。不要尝试将整型结果转换为'c_char_p(result)'。这会截断64位指针。 – eryksun 2014-12-05 20:37:26