Вообще понятия не имею что я делаю не так. Пытаюсь подгрузить dll для прочтения файла. В интернете ответов не нашёл, ChatGPT тоже не помог.
reader.cxx
# include <fstream>
# include <string>
using namespace std;
extern "C" __declspec(dllexport) const char* readfile(char* filename) {
ifstream file;
string lines, line;
file.open(filename);
if (file.is_open()) {
while (file >> line) {
lines += line;
}
file.close();
return lines.c_str();
} else {
char* trashVar = "Bad open";
return trashVar;
}
}
loader.py
from ctypes import *
dll = cdll.LoadLibrary("./reader.dll")
dll.readfile.argtypes = [c_char_p]
dll.readfile.restypes = c_char_p
address = dll.readfile(b"filename.txt")
print(c_char_p(address).value) # Вот тут вылетает
Компиляция
clang++ -c -o reader.o reader.cxx
clang++ -shared -v -o reader.dll reader.o
Возможно, мне не хватает памяти на компьютере, а может проблема в другом. Может в том что я возвращаюсь const char* вместо char*?