On Jun 3, 3:19 pm, "Mark Tolonen" <[EMAIL PROTECTED]> wrote: > "windwiny" <[EMAIL PROTECTED]> wrote in message > > news:[EMAIL PROTECTED] > > > > > 我初学python 的 ctypes, 现在的环境是 ubuntu 8.04, Python 2.5.2 > > (r252:60911, > > May 7 2008, 15:19:09) , gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7) > > 我创建了一个 so 共享库 > > --------------------- > > #include <math.h> > > double myfd(double x) { return x * 2;} > > float myff(float x) { return x * 3;} > > int myfi(int x) { return x * 4 ;} > > --------------------- > > 用 gcc -shared a.c -o liba.so 来生成了一个 liba.so , > > 用其它 c 程序链接这个库,里面的函数是能正确运行的 > > 我写了一个python 程序 > > --------------------- > > # coding:utf-8 > > import ctypes as dll > > p = dll.cdll.LoadLibrary("./liba.so") > > p.myfd.argtypes = [dll.c_double] > p.myfd.restype = dll.c_double > p.myff.argtypes = [dll.c_float] > p.myff.restype = dll.c_float > > > print p.myfi(8) # 得32,正确 > > try: > > print p.myfd(0.3) # 出错 > > except: > > print "except myfd()" > > try: > > print p.myff(0.4) # 出错 > > except: > > print "except myff()" > > --------------------- > > 出错提示为 ctypes.ArgumentError: argument 1: <type > > 'exceptions.TypeError'>: > > Don't know how to convert parameter 1 > > > 这是什么原因? > > --Mark (马克)
噢,原来还要设置参数和返回值类型。 谢了 -- http://mail.python.org/mailman/listinfo/python-list