我正在尝试从Python代码中调用一个C++函数,如果我传递布尔值或int
类型的参数,它可以完美地工作,但是如果我传递字符串,则只会打印第一个字符。
我使用以下编译选项进行编译:
g++ -c -fPIC foo.cpp -Wextra -Wall -o foo.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
python3 fooWrapper.py
以下是C++和Python代码:
Python:
from ctypes import cdll
lib = cdll.LoadLibrary("./libfoo.so")
lib.Foo_bar("hello")
c++:
#include <iostream>
#include <string>
#include <unistd.h>
void bar(char* string){
printf("%s", string);
}
extern "C" {
void Foo_bar(char* aString){
bar(aString);
}
}
我知道Boost
库,但是我无法下载它,除了字符串以外这种方法都很好用。谢谢你的帮助。
%i
是做什么用的? - Jonathon Reinhart%s
,之前试过用整数。 - Chronoxxwchar_t
只在一个地方出现但没有解释。wchar_t
和宽字符也没有被解释。 - jww