所有,我发现了一条关于如何在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