gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:32:19 26 4
gpt4 key购买 nike

我有一堆以 C std:string 作为函数参数的 C++ 函数。

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

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

最佳答案

一种方法,如果您要调用一小组函数,可能是简单地将采用 std::string 的 C++ 方法与采用 char* 的方法包装起来,并使用 Java 字符串从 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和std_string.i 和 std_basic_string.i 文件可在安装 swig 的任何位置找到。这个旧版本的 SWIG 可能不可用(我使用的是 2.0.1)。

关于java - 如何使用 SWIG 生成的接口(interface)将字符串从 Java 传递给 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4652638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com