qt — не может вернуть QString из функции c ++ в функцию PERL с помощью SWIG

У меня есть код C ++ (включая также Qt), я хочу вызывать эти функции с помощью Perl.
Что мы можем сделать, используя SWIG, поэтому я реализовал интерфейсы и сделал все необходимое для их использования в скрипте Perl.

У меня есть функция в C ++, которая возвращает значение QString,

QString get_string()
{
return QString("mystring");
}

Я написал еще один класс, который будет использоваться в скрипте Perl, где у меня есть функция, которая вызывает эту функцию get_string () и возвращает const char *.

const char* get_const_string()
{
QString str = get_string();

**//here I print str and str .toLocal8Bit().constData()
//both are printing the text which i shoud get here**

return str.toLocal8Bit().constData();

//here I have tried diff combinations also, as
// return str.toStdString().c_str();
}

Проблема в том, что в функции get_const_string () я мог получить нужную строку, но когда я вызываю эту функцию в моем скрипте perl, я получаю неопределенное значение, т.е. пустая строка

.

Любая идея, в чем здесь проблема?

Я использую Perl5, Qt4.8.4

Заранее спасибо.

0

Решение

если вы не можете использовать QString возвращаемое значение, может быть, вы можете использовать std::string,

если оба не удаются и у вас нет ограничений, вы можете сделать несколько подвохов:

QString get_string()
{
static QByteArray arr;
QString str = getString();
arr = str.toLocal8Bit();
return arr.constData();
}

обратите внимание, что arr переменная не будет бесплатной, пока ваше приложение не запустится

редактировать: нашел возможное решение просто использовать std::stringстроковые аргументы не распознаются SWIG

0

Другие решения


По вопросам рекламы [email protected]