我正在嘗試使用cython從
python生成c**,但似乎存在名稱重整的一些問題.我首先生成將**從python轉換為c**,然後使用gcc將**編譯成.so.我想使用cython而不是c / python api的原因是因為我稍後會在更複雜的類上使用它,我希望以後成為乙個速度等的庫(我很難找到去的人從python到c,因為它通常是相反的方式).下面是我必須嘗試執行**的所有**(但都失敗了).任何輸入將不勝感激.謝謝!
#hello.pyx
def say_hello():
print "hello world!"
#generate the c code
cython -a hello.pyx
#creates the shared library
gcc -shared -pthread -fpic -fwrapv -o2 -wall -fno-strict-aliasing -i/usr/include/python2.6 -o libhello.so hello.c
#include
extern "c" {
void say_hello();
using namespace std;
int main(){
say_hello();
return 1;
#attempt to compile (this is where it fails)
g++ -i/usr/include/python2.6/ -lpython2.6 -l./ -lhello temp.cpp -o temp
這是錯誤訊息:
/tmp/ccpkhoml.o: in function main: temp.cpp:(.text+0x5): undefined reference to say_hello' /tmp/ccpkhoml.o:
in function __static_initialization_and_destruction_0(int, int):
temp.cpp:(.text+0x33): undefined reference to std::ios_base::init::init()
temp.cpp:(.text+0x38): undefined reference to std::ios_base::init::~init()
collect2: ld returned 1 exit status
在C 程式中嵌入Perl
perl 庫一般在這樣的資料夾下 usr local lib perl5 your architecture here core 可以這樣得到它的位置 perl mconfig e print config 編譯的時候要這樣 gcc o2 dbool char dhas bool i usr loc...
C 在Panel中嵌入子窗體
關閉嵌入的其他窗體 foreach control item in this.splitcontainer.panel2.controls 開啟新窗體 frmaddproduct newfrm new frmaddproduct form newfrm new form newfrm.topleve...
在C中呼叫C 函式
由於c編譯器與c 編譯器之間的區別十分巨大,因此二者之間不可以直接互相呼叫各自的函式介面。但是,使用extern c 可以實現在c 中呼叫c 函式的功能,反之亦可。extern c 告訴c 編譯器,將花括號中的 按照c語言的規則進行編譯與鏈結。cppprint.cpp cppprint.h call...