對不起,我的英文很糟糕。 所以。 我在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