Нашёл хороший пример как с питона обратиться к с++ библиотеке, немного подкорректировал, чтобы передавать строку в функцию, однако он мне выдаёт ошибку на строке s.value = text, хотя в другом примере именно так использовали. Если просто отправляю текст, то он мне печатает только 1 символ. Помогите пожалуйста передать строку целиком
#include <iostream>
#include <string.h>
class My {
public:
void bar(char* text) {
std::cout << "Hello" << text << std::endl;
}
};
extern "C" {
My* My_new() { return new My(); }
void My_bar(My* my, char* text){ my->bar(text); }
}
import os
from ctypes import cdll
from ctypes import c_char_p
lib = cdll.LoadLibrary("".join([(os.getcwd()), ("/libfoo.so")]))
class cpp(object):
def __init__(self):
self.obj = lib.My_new()
def bar(self, text):
s = c_char_p()
s.value = text
lib.My_bar(self.obj, s.value)
def main():
cp = cpp()
cp.bar("lol" )
if __name__ == '__main__':
main()