Строка C ++ к ограничению Python с использованием SWIGC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Строка C ++ к ограничению Python с использованием SWIG

Сообщение Anonymous »

Недавно я наткнулся на ограничение SWIG, связанное с размером C ++ std :: string. < /p>

У меня есть код C ++, возвращающий пару. Я заметил, что когда размер строки в паре меньше, что 2*1024*1024*1024-64 (2 ГБ) пара правильно возвращает, а строка сопоставлена ​​с нативной строкой Python. Однако, если строка больше 2 ГБ, то в Python строка больше не отображается на собственную строку Python. Например, используя приведенный ниже код и сопоставление через SWIG на Python, вы можете воспроизвести мою ошибку. Python 2.7.12 < /p>

/////////// bridge.h
#include
#include
#include
#include
#include
using namespace std;
pair large_string(long sz);
long size_pstring(pair& p);
void print_pstring(pair& p);
string save_pstring(pair& p);

//////////bridge.cc
#include "bridge.h"

pair large_string(long sz){
pair pis;
pis.first=20;
pis.second=string(sz,'A');
return pis;
}

long size_pstring(pair& p){
return p.second.size();
}

void print_pstring(pair& p){
cout>> print l
2147483648
>>> fname = graphdb.save_pstring(s)
< /code>

Сохранение строки в файл является правильной, и затем я могу правильно загрузить файл на строку Python. < /p>

Итак, мой вопрос: кто-нибудь знает, какой вариант конфигурации SWIG я должен изменить, чтобы допустить, чтобы большие строки были должным образом отображены с нативным питоном?>

Подробнее здесь: https://stackoverflow.com/questions/500 ... using-swig
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»