Python 調(diào)用VC++的動(dòng)態(tài)鏈接庫(kù)(DLL)
更新時(shí)間:2008年09月06日 14:33:29 作者:
Python下調(diào)用VC++的動(dòng)態(tài)鏈接庫(kù)的腳本
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語(yǔ)言中的一些參數(shù)類型詳見(jiàn):http://www.python.org/doc/2.5/lib/node454.html
3. 輸出結(jié)果:
5
Hello DLL
復(fù)制代碼 代碼如下:
#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)用如下:
復(fù)制代碼 代碼如下:
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語(yǔ)言中的一些參數(shù)類型詳見(jiàn):http://www.python.org/doc/2.5/lib/node454.html
3. 輸出結(jié)果:
5
Hello DLL
相關(guān)文章
Python使用正則表達(dá)式分割字符串的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python使用正則表達(dá)式分割字符串的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07基于Python編寫(xiě)詞云軟件并顯示分詞結(jié)果
這篇文章主要為大家詳細(xì)介紹了如何基于Python編寫(xiě)一個(gè)簡(jiǎn)單的詞云制作軟件并顯示分詞結(jié)果,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2023-10-10PyTorch開(kāi)源圖像分類工具箱MMClassification詳解
MMClassification是一款基于PyTorch的開(kāi)源圖像分類工具箱,集成了常用的圖像分類網(wǎng)絡(luò),將數(shù)據(jù)加載,模型骨架,訓(xùn)練調(diào)參,流程等封裝為模塊調(diào)用,便于在模型間進(jìn)行轉(zhuǎn)換和比較,也高效簡(jiǎn)潔的實(shí)現(xiàn)了參數(shù)調(diào)整2022-09-09Jupyter Notebook運(yùn)行代碼無(wú)反應(yīng)問(wèn)題及解決方法
這篇文章主要介紹了Jupyter Notebook運(yùn)行代碼無(wú)反應(yīng)問(wèn)題及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01利用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)易的截圖工具
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一個(gè)簡(jiǎn)易的截圖工具,可以截完圖之后顯示并且永遠(yuǎn)前置,感興趣的小伙伴可以嘗試一下2022-07-07Python multiprocessing.Manager介紹和實(shí)例(進(jìn)程間共享數(shù)據(jù))
這篇文章主要介紹了Python multiprocessing.Manager介紹和實(shí)例(進(jìn)程間共享數(shù)據(jù)),本文介紹了Manager的dict、list使用例子,同時(shí)介紹了namespace對(duì)象,需要的朋友可以參考下2014-11-11