Python調(diào)用VC++的動態(tài)鏈接庫(DLL)
來源:懂視網(wǎng)
責(zé)編:小采
時間:2020-11-27 14:29:31
Python調(diào)用VC++的動態(tài)鏈接庫(DLL)
Python調(diào)用VC++的動態(tài)鏈接庫(DLL):1. 首先VC++的DLL的導(dǎo)出函數(shù)定義成標(biāo)準(zhǔn)C的導(dǎo)出函數(shù): 代碼如下:#ifdef LRDLLTEST_EXPORTS #define LRDLLTEST_API __declspec(dllexport) #else #define LRDLLTEST_API __declspec(dllimport) #endif exter
導(dǎo)讀Python調(diào)用VC++的動態(tài)鏈接庫(DLL):1. 首先VC++的DLL的導(dǎo)出函數(shù)定義成標(biāo)準(zhǔn)C的導(dǎo)出函數(shù): 代碼如下:#ifdef LRDLLTEST_EXPORTS #define LRDLLTEST_API __declspec(dllexport) #else #define LRDLLTEST_API __declspec(dllimport) #endif exter

1. 首先VC++的DLL的導(dǎo)出函數(shù)定義成標(biāo)準(zhǔn)C的導(dǎo)出函數(shù):
代碼如下:
#ifdef LRDLLTEST_EXPORTS
#define LRDLLTEST_API __declspec(dllexport)
#else
#define LRDLLTEST_API __declspec(dllimport)
#endif
extern "C" LRDLLTEST_API int Sum(int a , int b);
extern "C" LRDLLTEST_API void GetString(char* pChar);
//a + b
LRDLLTEST_API int Sum(int a , int b)
{
return a + b;
}
//Get a string
LRDLLTEST_API void GetString(char* pChar)
{
strcpy(pChar, "Hello DLL");
}
2. Python中調(diào)用如下:
代碼如下:
from ctypes import *
fileName="LRDllTest.dll"
func=cdll.LoadLibrary(fileName)
str = create_string_buffer(20)
n = func.Sum(2, 3)
func.GetString(str)
print n
print str.raw
關(guān)于C語言中的一些參數(shù)類型詳見:http://www.python.org/doc/2.5/lib/node454.html
3. 輸出結(jié)果:
5
Hello DLL
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
Python調(diào)用VC++的動態(tài)鏈接庫(DLL)
Python調(diào)用VC++的動態(tài)鏈接庫(DLL):1. 首先VC++的DLL的導(dǎo)出函數(shù)定義成標(biāo)準(zhǔn)C的導(dǎo)出函數(shù): 代碼如下:#ifdef LRDLLTEST_EXPORTS #define LRDLLTEST_API __declspec(dllexport) #else #define LRDLLTEST_API __declspec(dllimport) #endif exter