【发布时间】:2018-07-06 09:38:39
【问题描述】:
我继承了一个带有相关头文件的 C++ DLL,函数声明如下
int func1(int i);
int func2(char* s);
我还继承了一个引用 VC++ 引用类,它包装了上面要在 C# 环境中使用的 DLL
public ref class MyWrapperClass
{
int func1_w(int i)
{
return func1(i);
}
int func2_w(char* s)
{
return func2(s);
}
}
在我的 C# 应用程序中,我可以使用 func1_w(int i),但我不明白如何将字符串传递给 func2_w(sbyte* s):我收到一个错误,提示我无法获得指向sbyte。我将 C# 项目设置为不安全并将函数声明为不安全。
如何将 sbyte* 参数传递给 functiuon func2_w?
【问题讨论】:
-
那个 ref 类非常糟糕,应该将包装器声明为 int func2_w(System::String^ s) 以便可以从任何托管语言轻松调用它。谷歌“convert from system::string to char*”找到你需要的字符串转换代码。
标签: c# c++ string cross-language sbyte