我已經(jīng)從 DLL 導(dǎo)出了這個(gè)簡(jiǎn)單的函數(shù)(我在 MSVC2015、Windows 10、x64 中工作):// Main.h#define DLL_SEMANTICS __declspec (dllexport)extern "C"{ DLL_SEMANTICS int CheckVal(const int x, const int y = 1);}代碼:// Main.cpp int CheckVal(const int x, const int y) { cout << y << endl; return 0; }}根據(jù)這個(gè)SO線程,使用extern "C"應(yīng)該不是問(wèn)題,事實(shí)上,當(dāng)從exe文件調(diào)用這個(gè)函數(shù)時(shí),我得到了想要的結(jié)果(即,控制臺(tái)的“1”),但是當(dāng)我使用Python從Python調(diào)用這個(gè)函數(shù)時(shí):import ctypesfrom ctypes import cdlldllPath = r"C:\MyDll.dll"lib = cdll.LoadLibrary(dllPath)lib.CheckVal(ctypes.c_int(1))我正在打印一些垃圾值(通過(guò) PTVS 調(diào)試確認(rèn)這y確實(shí)是垃圾值。)我是否做錯(cuò)了什么或者默認(rèn)參數(shù)無(wú)法在 Python 中工作?
1 回答

catspeake
TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
默認(rèn)參數(shù)是 C++ 的一個(gè)優(yōu)點(diǎn)。如果您在 C++ 外部調(diào)用,則需要傳遞兩個(gè)參數(shù)。
添加回答
舉報(bào)
0/150
提交
取消