在用ctypes进行C++和python的混合编程遇到了点问题想请教一下各位
我将一个可以返回字符串(char*)的C++函数封装了起来,然后在python中调用它,结果python中始终只能读取到字符串的第一个字符python的代码,calculator是我封装的dll文件:
import ctypes
bignumber = ctypes.CDLL( "calculator")bignumber.add.restype = ctypes.c_char_pa = bignumber.add( "123", "123")
print(a)
运行结果是b'2'
这是C++ 那个函数(add)中的代码
answer = (char*)malloc(sizeof(char)*results.size());
strcpy(answer,(char* )results.c_str());
return answer;
本帖最后由 人造人 于 2021-12-31 20:05 编辑
不知道你是怎么操作的,而且你的代码也不完整
还有,你的图片怎么弄成付费的了,要4鱼币才能看?
$ ls
main.cppmain.py
$ cat main.cpp
#include <iostream>
extern "C" void put_string(const char *str) {
std::cout << str << std::endl;
}
extern "C" const char *get_string(void) {
return "hello world!";
}
$ g++ -shared -fPIC -g -Wall -o main.so main.cpp
$ ls
main.cppmain.pymain.so
$ cat main.py
#!/usr/bin/env python
#coding=utf-8
from ctypes import *
main = cdll.LoadLibrary('./main.so')
main.put_string.argtypes =
main.put_string(b'abcd')
main.get_string.restype = c_char_p
print(main.get_string())
$ ./main.py
abcd
b'hello world!'
$ 人造人 发表于 2021-12-31 20:01
不知道你是怎么操作的,而且你的代码也不完整
还有,你的图片怎么弄成付费的了,要4鱼币才能看?
付费才能看啊哈哈哈 人造人 发表于 2021-12-31 20:01
不知道你是怎么操作的,而且你的代码也不完整
还有,你的图片怎么弄成付费的了,要4鱼币才能看?
我靠不好意思哈哈哈,我本来是悬赏的
页:
[1]