Python CDLL无法加载库2次

时间:2014-12-05 14:14:01

标签: python python-3.x ctypes

抱歉,我的英语非常糟糕。 所以。 我在Dev c ++中编写了简单的动态链接库。 它工作得很好。今天我导入这是我的python项目中的库。 动态链接库文件路径:lib/my_dll.dll #Dialog框 config.py

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"

但是我重用了这个函数python生成下一个错误

OSErrror:[WinError 126] The specified module could not be found

感谢您阅读!

1 个答案:

答案 0 :(得分:1)

在注释中,您声明您的DLL函数调用显示文件选择对话框的API函数。文件选择对话框,除非您告诉他们不要,否则可以更改工作目录。由于您未能指定DLL的完整路径,因此每次都会执行DLL搜索。第一次成功,因为您的工作目录恰好是找到DLL所需的。随后的DLL搜索失败,因为您的工作目录已更改。

一些建议:

  1. 在加载DLL时,始终只使用文件名或完整绝对路径。在你的情况下,我怀疑你需要使用后者。
  2. 每次调用函数时都会加载DLL。加载一次就足够了。不要一次又一次地加载它来浪费时间。
  3. 直接从Python显示文件对话框可能更容易,并且避免为此目的创建DLL。
  4. 您的ctypes函数导入未指定restype,因此我看不到您如何从该函数获取文本。更重要的是,我不知道每次调用函数时如何避免泄漏内存。除非文本存在于静态数组中。