将ctypes与typedef一起使用

埃里克

我想调用一个C函数

void initialize(My_Session* session, My_Status* status);

从Python使用ctypes。数据类型定义为

typedef uint32_t My_Session;
typedef int32_t My_Status;

现在,我想知道如何使用ctypes传递参数。我是否使用c_uint32c_int32,还是必须像对结构所做的那样定义一个类?

埃里克

eryksun的评论使我步入正轨。

在python文件中,我必须定义:

from ctypes import *

_libtest = CDLL('libTest')

_libtest.initialize.argtypes = [POINTER(c_uint32), POINTER(c_int32)]
_libtest.initialize.restype  =  None

def initialize(session,status):
    return _libtest.initialize(byref(session),byref(status))

if __name__ == '__main__':
    session = c_uint32();
    status = c_int32();

    initialize(session, status)

    print status

C库的名称必须为libTest.dll。


或者,定义initialize以创建ctypes整数。然后返回sessionstatus作为Python整数:

def initialize():
    session = c_uint32()
    status = c_int32()
    _libtest.initialize(byref(session), byref(status))
    return session.value, status.value

if __name__ == '__main__':
    session, status = initialize()
    print 'session:', session
    print 'status:', status

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将ctypes与typedef一起使用

来自分类Dev

将typedef与模板类一起使用

来自分类Dev

如何将函数与point和typedef结构一起使用

来自分类Dev

_Generic与typedef结构一起使用还是仅与基本类型一起使用?

来自分类Dev

将#define 和 typedef 与数据类型一起使用是一种好习惯吗?

来自分类Dev

将“ -Filter”与变量一起使用

来自分类Dev

将PowerMock与黄瓜一起使用

来自分类Dev

将XhtmlTextWriter与XmlTextReader一起使用

来自分类Dev

将Scrapyd与参数一起使用

来自分类Dev

将AngularJS与Liferay一起使用

来自分类Dev

将Magicline与Flexslider一起使用

来自分类Dev

将CMAttitude与CMCalibratedMagneticField一起使用

来自分类Dev

将findall与arg一起使用

来自分类Dev

将StaticPagedList与PagedListRenderOptions一起使用

来自分类Dev

将Redis与SignalR一起使用

来自分类Dev

将阵列与渗透一起使用

来自分类Dev

将regex与replaceAll一起使用

来自分类Dev

将SUMPRODUCT与TRANSPOSE一起使用

来自分类Dev

将MaybeT与`join`一起使用

来自分类Dev

将ShardedJedis与RedisTemplate一起使用

来自分类Dev

将Browserify与Reactjs一起使用

来自分类Dev

将Sympy与Pypy一起使用

来自分类Dev

将Kotlin与Dagger一起使用

来自分类Dev

将mciSendString与空格一起使用

来自分类Dev

将<leader>与:normal一起使用

来自分类Dev

将Disqus与星级一起使用

来自分类Dev

将TeamCity与BitBucket一起使用

来自分类Dev

将QTableView与模型一起使用

来自分类Dev

将MKTileOverlay与MKPolyLine一起使用