【发布时间】:2019-01-28 18:05:33
【问题描述】:
我想在 Python 上使用 C 库。 然后,我想从 C 库 fanction 中获取消息( char* )。
我编写了这些代码。 我得到了 result value(double* result_out) ,但没有收到消息。 此代码显示“c_char_p(None)”。
有什么想法吗?
我使用 Python 3.6 和 Ubuntu Bash。
C (libdiv.so):
#define ERROR -1
#define OK 0
int div (double x, double y, char *msg, double *result_out) {
static char *err_msg = "0 div error";
if(y == 0) {
msg = err_msg;
return ERROR;
}
*result_out = x/y;
return OK;
}
Python:
from ctypes import *
lib = cdll.Loadlibrary('libdiv.so')
errmsg = c_char_p()
result = c_double(0)
rtn = lib.div(10, 0, errmsg, byref(result))
if rtn < 0:
print (errmsg) # None
else :
print (result.value) # OK.
【问题讨论】: