如何使用SWIG生成的接口从Java将字符串传递给C ++函数

时间:2011-01-10 23:18:03

标签: java c++ swig

我有一堆C ++函数,它们将C std:string作为函数参数。

我想将java字符串传递给那些函数。我在Java和C ++之间生成了一个SWIG JNI接口。我可以看到no-args构造函数很好,但如果我尝试使用构造函数中的String参数编译我的java,我会得到“找不到符号”,我认为这是因为类构造函数的方式有趣已定义。

你如何解决这个问题?类型图是答案吗?如果是这样 - 你从哪里开始?

1 个答案:

答案 0 :(得分:7)

一种方法,如果你有一小组要调用的函数,可能只是简单地包装带有char *的方法的std :: string的C ++方法,并使用Java Strings从Java调用它们,因为默认类型 - Java String C ++ char *之间的映射将按预期工作。你也可以在你的interface.i文件中添加这样的东西:

%include "std_string.i" // for std::string type-maps
#include <string>

我认为这样可以适用于您的案例而无需任何修改。 有关更多信息,请参阅the Java SWIG default type-map documentation和 无论您的swig安装在何处,都可以找到std_string.i和std_basic_string.i文件。这个 可能在早期版本的SWIG中不可用(我使用的是2.0.1)。