我的 C++ 类有一个名为 init
的方法:
int init(int argc, char **argv)
另外,我有一个回调函数:
void callback(int num, char **str)
我的问题是,Swig生成了一个奇怪的类SWIGTYPE_p_p_char.cs
,而不是我期望的string[]
。请给予建议。
SWIG在arrays_csharp.i中有一些用于将数组传递给函数的类型映射。然而,对于char *INPUT[]
,没有一个类型映射,但我们可以调整类型映射以实现您想要的功能:
%module test
%include <arrays_csharp.i>
CSHARP_ARRAYS(char *, string)
%typemap(imtype, inattributes="[In, MarshalAs(UnmanagedType.LPArray, SizeParamIndex=0, ArraySubType=UnmanagedType.LPStr)]") char *INPUT[] "string[]"
%apply char *INPUT[] { char **argv }
int foo(int argc, char **argv);
string
数组的typedef,但然后替换了imtype以便我们提供自己的编组信息。%pragma(csharp) modulecode = %{
public static int foo(string[] argv) {
return foo(argv.Length, argv);
}
%}
SizeParamIndex
}}。