以下代码将在Java上调用c_func()期间终止。如果不使用元组,则不会发生。我猜JNA不支持C ++ 11,因为它上面引入了元组类型。我的猜测是否正确?
C ++代码
#include <tuple>
#include <map>
int c_func(){
static std::map< std::tuple<float, float, float>, float> mapOfTuple;
return 1;
}
Java代码
...
public interface CLibrary extends Library {
public static final String JNA_LIBRARY_NAME = "test";
...
}
public static void main(String[] args) {
c_func();
}
答案 0 :(得分:1)
JNA在接口级别工作,而不是在实现级别。它甚至知道你在c_func
中使用了C ++ 11。但是,您的C ++函数可能依赖于C ++ 11运行时库,这可能是问题所在。