日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

在Python中调用C++,使用SWIG

發布時間:2025/5/22 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Python中调用C++,使用SWIG 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.coder4.com/archives/2141

SWIG:Simplified Wrapper and Interface Generator,顧名思義,就是將C/C++包裝為其他高級語言的Wrapper工具,非常好用。

該項目歷史悠久(創始于1995年!),且一直非常活躍,目前最新版本為2011年5月發布的2.0.4。

1、安裝SWIG

1 2 3 4 5 6 7 wget http://prdownloads.sourceforge.net/swig/swig-2.0.4.tar.gz tar -xzvf swig-2.0.4.tar.gz cd swig-2.0.4/ #我們這里只編譯Python的語言支持,可以根據你得需要加別的! ./configure --without-alllang --with-python|grep python make sudo make install

2、C++代碼
我們以包裝一個簡單的類為例子:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <string> using std::string; class MyObj { public: ????string SayHello(string name) ????{ ????????string ret("Hello, "); ????????return ret + name; ????} private: ????string id; };

3、編寫Interface文件
SWIG需要一個intf文件,可以寫的很復雜,也可以偷懶:只引用你要Wrap的.h頭問件就可以啦!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* myobj.i */ %module myobj %{ /* 相關引用 */ #include "MyObj.h" #include <string> %} /* 對STL的支持 */ %include stl.i /* Wrapper并生成代碼 */ %include "MyObj.h"

4、生成Wrapper代碼

1 2 3 4 5 6 7 8 #生成,第一個python是目標語言,跌入個-c++是啟用c++模式 swig -python -c++ ./myobj.i #成功的話,會生成如下文件 myobj.i??myobj_wrap.c??myobj_wrap.cxx #編譯,生成so文件,注意一定要用g++而不是ld做Link!! g++ -c myobj_wrap.c myobj_wrap.cxx -I /usr/include/python2.6/ -fPIC g++ -shared myobj_wrap.o -o?_myobj.so

5、測試

1 2 3 4 5 >>> import myobj >>> o = myobj.MyObj() >>> o.SayHello("ICT") 'Hello, ICT' >>>

6、補充

如果你想使用復合類型,例如vector<string>,請務必在.i文件中聲明!

1 2 3 4 namespace std{ %template(VectorOfString) vector<string>; }

轉載于:https://www.cnblogs.com/DjangoBlog/p/4105530.html

總結

以上是生活随笔為你收集整理的在Python中调用C++,使用SWIG的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。