所有,我發現了一條關於如何在python中調用c文件的信息,在這些例子中:有ac文件,其中包含許多其他頭文件,這個c文件的最開始部分是#include Python.h
,然後我發現#include Python.h
實際上涉及許多其他頭文件,如pystate.h
,object.h
等,所以我包含了所有需要的頭文件。在一個cpp IDE環境中,它沒有顯示錯誤。 我想要做的是在python中調用這個c代碼,所以from ctypes import *
,那麼看起來dll
應該由代碼生成,例如:cl -LD test.c -test.dll
,但是在這種情況下如何使用cl
?我使用了cygwin:gcc
,它工作正常。任何人都可以幫我解決這個問題,例如:在python中調用C?我是否清楚自己?先謝謝你!!如何使用cl命令?
嗯,現在我覺得告訴我我做了什麼很重要: 我想達到的最終目標是:我很懶,我不想在python中重寫那些c代碼,在某些情況下對我來說很複雜),所以我只想生成python可以調用的文件dll
。我接着googleing 「蟒蛇調用C」 給出的,有兩個版本在這個實例的實例:test.c
的例子:Linux和Windows
#include <windows.h>
BOOL APIENTRY
DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) {
return TRUE;
}
__declspec(dllexport) int
multiply(int num1, int num2) {
return num1 * num2;
}
兩個版本: 1,Complie linux下
gcc -c -fPIC test.c
gcc -shared test.o -o test.so
我在我的vista系統上使用了cygwin,它工作的很好; :)
2,編譯Windows下:
cl -LD test.c -test.dll
我以前在Windows命令行提示符下CL,它不會工作!
這些蟒蛇代碼:
from ctypes import *
import os
libtest = cdll.LoadLibrary(os.getcwd() + '/test.so')
print test.multiply(2, 2)
任何人都可以試試這個,告訴我你得到了什麼?謝謝!
這實際上與Python沒有任何關係,只是詢問如何在命令行上運行Microsoft工具鏈的編譯器。請考慮標記你的問題。 – 2010-09-09 18:58:51
@Jim:也許我應該補充:如何從c生成dll文件,以便python可以調用它,就像在windows中一樣,IDE給出的煩人的噪聲無關代碼本身 – serina 2010-09-09 19:04:25
看,也許你真正的問題是與您遇到的「噪音」相關,但您自己已經提出了一種解決方案,即從命令行進行編譯。您可能會問,如何配置您的IDE以消除噪音,或者,如果噪音有任何意義。 – 2010-09-09 19:08:40