急求教:在c中嵌入python时应该链接哪个库啊??

dengyejing 2006-04-10 07:22:29
所有的示例上都没说过这个问题,包括官方文档,
只说了加一个Python.h的头文件,可是没说哪个库文件啊??真是晕死我了啊。。。
请大侠给个完整的makefile,多多多多谢!!
...全文
256 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyimath 2006-04-17
  • 打赏
  • 举报
回复
up
xyzxyz1111 2006-04-11
  • 打赏
  • 举报
回复
在C中嵌入Python
你到python安装目录里搜一下, 看看里面是否有libpython<version>.a (unix) 或者python<version>.lib, 如果有的话,就链接该库可以。

BTW
使用SWIG生成Extension,不用写Makefile , 写个setup.py
然后setup.py build, 或者setup.py install就可以

#setup.py
import distutils
from distutils.core import setup, Extension

ext_module = Extension("_" + mod_name,
sources = [ "aa_wrap.c", "bb.c"])

setup(name = "Some python extension",
version = "1.0",
packages = ['py***'],
package_dir = {"py**": "py**"},
ext_modules = [ext_module])
shhgs 2006-04-11
  • 打赏
  • 举报
回复
//------------------------------------------
//cppobj.h
//
#include <iostream>
using namespace std;

class cppobj {
private :
string s;
public :
cppobj(string a): s(a) {};
string show() {return s;}
};
//-----------------------------------------

//------------------------------------------
//cppobj.i
%module cppobj
%include "std_string.i"

%{
#include "cppobj.h"
%}

%include "cppobj.h"
//------------------------------------------

//------------------------------------------
// Makefile
_cppobj.so: cppobj_wrap.o
g++ -o $@ $< -shared -fpic -lpython24

cppobj_wrap.cxx: cppobj.i cppobj.h
swig -c++ -python cppobj.i

cppobj_wrap.o: cppobj.h cppobj_wrap.cxx
g++ -c cppobj_wrap.cxx -fpic -IC:/Python24/include

clean:
rm -rf cppobj_wrap.cxx _cppobj.so *.o cppobj.py cppobj.pyc
//------------------------------------------

make完之后还要
$ mv _cppobj.so _cppobj.pyd
然后就可以
>>> from cppobj import cppobj
>>> c = cppobj('Hello')
>>> c.show()
'Hello'


很久以前记的笔记,希望能帮上忙

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧