我正在制作一个X平台库,我试图将它导出到Java。从C++通过JNI返回空字符串到Java
这里面有我返回一个字符串的函数:
C++代码
string results = "";
for (vector<int>::size_type i = 0; i < resultsDouble.size(); i++) {
for (it_type3 it = distances.begin(); it != distances.end(); ++it) {
String key = it->first;
double value = distances.at(key);
if (value == resultsDouble.at(i)) {
typesString.push_back(key);
results = results + " " + key;
}
}
}
char const* resultsChar = results.c_str();
return resultsChar;
打印出来Java的时候,甚至在JNI调用它的空
。
它是空的,以及如果我做to_string(results).c_str();
但我知道,这个字符串不是空的,因为当我打印to_string(results.length()).c_str();
它表明我435。
为什么它显示空字符串?
谢谢。
编辑
如果我改变我的结果字符串,我得到:
致命的信号11(SIGSEGV)在0x00000004(代码= 1),螺纹17339(w.opencvtesting)
EDIT 2 我想这样的:
个string getMyString(string JSON, long proof) {
string result = "";
return result;
}
什么日志打印我的是:
Ж)¤
您应该创建一个的jstring对象,从JNI调用返回此。 – mkaes 2014-09-29 10:42:06
我调试打印结果(常量字符*类型),并通过jstring发送它作为'jstring结果=(env) - > NewStringUTF(matchingString);' – 2014-09-29 10:53:14