c python函式 在C中嵌入python函式

2021-10-18 05:21:45 字數 1193 閱讀 8046

我正在嘗試使用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...