c# - 我如何将 C# string[] 编码(最好在 SWIG 中)到 C++ string*?

标签 c# c++ marshalling swig

我是 C# 编程的新手,正在尝试调用 C++ 中的包装函数。

在 C++ 中,我有以下原型(prototype)的函数

string* swap(string* ptr1, string*ptr2){
    //swap the array of string
    return ptr2;
}

如何将此函数包装到 C# 中(最好使用 SWIG,但不是必需的)?

最佳答案

我对 Java 有同样的问题。

对于 Java,我没有发现任何预先打包且易于使用的东西。我必须定义自己的类型映射。

如果您没有得到关于 C# 的任何更好的答案,您可以从 SWIG: How to wrap std::string& (std::string passed by reference) 中描述的 SWIG/C++ 代码开始。 .

您需要替换对 Java 类型、JNI 方法(包括对“jenv”的引用)和“JavaThrowException”的引用。

这些来自 SWIG 的文件也可能为 C# 提供一些相关的示例代码:

  • 痛饮/Lib/csharp/std_string.i
  • swig/Lib/csharp/typemaps.i

关于c# - 我如何将 C# string[] 编码(最好在 SWIG 中)到 C++ string*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825974/

相关文章:

c++ - 使用 std::array<T, N> 会导致代码膨胀吗?

c++ - 为什么我不能使用 protected 嵌套类作为另一个嵌套 protected 类的模板参数?

ruby 编码(marshal)序列化

xml - JAXB 能否首先通过包含进行编码,然后通过@XmlIDREF 进行编码以供后续引用?

c# - 包含指向另一个 c++ 结构的指针的 c++ 结构的编码

C# - 无法访问所有文件

c# - 属性参数中的正则表达式约束抛出错误

C# - 使用 Javascript 从域中抓取 PDF 文件比 watin 更好的方法

c# - 使用 BackgroundWorker 更新 C# Chart

c++ - 如何返回 constexpr 的元组