我有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脚本中调用此函数时,我得到的是未定义的值,即 null string
。
任何想法,这里有什么问题?
我使用的是perl5,Qt4.8.4
提前致谢。
答案 0 :(得分:0)
如果您无法使用QString
返回值,则可以使用std::string
。
如果两者都失败并且你没有限制,你可以做一些肮脏的伎俩:
QString get_string()
{
static QByteArray arr;
QString str = getString();
arr = str.toLocal8Bit();
return arr.constData();
}
请注意,arr
变量不会是免费的,直到您的应用正在运行
编辑:找到了一个可能的解决方案,只需使用std::string
... string arguments are not recognized by SWIG