我想制作一个本地C++,可以从C#项目中使用。C#调用本地C++所有函数:使用哪些类型?
- 如果我想从C#传递一个字符串到C++中的函数中,我应该使用哪个参数?
- 我知道C#字符串使用Unicode,所以我尝试了wchar_t *作为函数,但它不起作用;我尝试捕获被调用函数引发的任何异常,但没有抛出异常。
- 我也想返回一个字符串,所以我可以测试它。
C++函数如下:
DECLDIR wchar_t * setText(wchar_t * allText) {
return allText;
}
的C#代码如下:
[DllImport("firstDLL.Dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]
public static extern string setText(string allText);
var allText= new string('c',4);
try {
var str1 = setText(allText);
}
catch (Exception ex) {
var str2 = ex.Message;
}
我需要使用C++函数的返回类型是什么类型,所以我可以从C#调用它返回类型为string[]
? 相同的Q但函数的参数是在C#中的字符串[]?
顺便说一下,当你发现你不知道你的变量是什么类型时,使用这样的var会很快回来咬你。 – 2011-03-20 13:27:45
只要你编译这3个var(s)就成为字符串。 – ukhardy 2011-03-20 13:34:29
@ukhardy哦,来吧,我知道!关键是,当你的代码遍布整个代码时,它比这更复杂,你会发现它是理解现有代码的障碍。 – 2011-03-20 13:56:17