如何使用C C 為Python編寫DLL SO

2021-07-03 11:05:25 字數 1579 閱讀 5073

開門見山,直接闡述步驟。

如果使用c語言,新建test.c檔案,並輸入以下內容:

// test.c

__declspec(dllexport) int

sum(int a, int b)

如果使用c++語言,新建test.cpp檔案,並輸入以下內容:

// test.cpp

#define dllexport extern "c" __declspec(dllexport)

dllexport int sum(int a, int b)

如果使用windows作業系統來開發,需要使用__declspec(dllexport)的宣告來說明這個函式是匯出的;如果使用linux作業系統,則這個宣告省略。

extern "c"宣告避免編譯器對函式名稱進行name mangling,這對於使用c++來編寫dll/so是必須的。

為了提高可讀性和可復用性,強烈建議使用#define來定義乙個匯出型別的巨集,正如上面的test.cpp**所示。

intsum(int, int);

如果使用windows作業系統,並安裝了visual studio的ide,則可以建立乙個新的win32專案,並指定為dll型別的空專案,然後將上面新建的兩個原始檔包含進去。最後編譯生成乙個dll,輸出為test.dll。

如果使用linux作業系統,使用以下命令來生成.so:

gcc -fpic -c test.c

gcc -shared -o test.so test.o

對於windows,進入test.dll所在目錄,執行python,然後輸入以下命令:

>>> from ctypes import cdll

>>> mydll = cdll.loadlibrary('test.dll')

>>> mydll

對於linux,執行python,然後輸入以下命令:

>>> from ctypes import cdll

>>> mydll = cdll.loadlibrary('/home/leo/test.so')

>>> mydll

值得注意的是,在linux中,載入的路徑需要指定為絕對路徑。

>>> mydll.sum(1, 4)

5

how to write a dll/so in c/c++ for python

如何使用python編寫PDF轉換器?

想必小夥伴都經歷過,當你想要把pdf轉為word時,自己打字赫赫甩在你眼前 不充錢就想白嫖?想得美 然而,kimol君是不會退縮的,畢竟迎難而上是傳統美德。於是,今天的主題出來了 用python寫乙個pdf轉word的小工具 基於某 介面 實現 import time import requests...

使用IDLE編寫Python

idle python gui 是乙個功能完備的 ide,允許你再這個ide中編寫 另外還有乙個python shell python的互動模式 可以在其上面進行程式設計練習 idle提供了大量的特性 1.tab鍵自動補全 先輸入前面幾個字母,然後按下tab鍵,idle會自動匹配 2.回退 語句 組...

使用c c 擴充套件python

用python指令碼寫應用比較方便,但有時候由於種種原因需要擴充套件python 比如給程式提供python介面等 之前一直想整理下,今天終於坐下來把這件事情給做了,這裡記錄下,也方便我以後查閱。說明 測試環境中作業系統為centos6.5 x64,python版本為2.6 1 編寫模組動態庫文 這...