來自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整數。然後返回session
和status
作爲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
謝謝eryksun!我根據你的建議改變了東西。我遵循http://nbviewer.ipython.org/github/jrjohansson/scientific-python-lectures/blob/master/Lecture-6A-Fortran-and-C.ipynb中的例子,這就是爲什麼我來使用numpy。 ctypeslib。 CDLL函數是否也能識別unix系統上的libTest.so? – erik 2014-10-08 11:04:44
這是我在這裏使用的私人圖書館。我只是想知道當我在Linux中做類似的事情時是否可以使用相同的功能。如果我知道了,我需要在這種情況下調用'CDLL('libtest.so')'。 – erik 2014-10-09 11:35:36