在C ++和C#之间传递字符串的首选方法是什么?
我有一个c ++类,其中一个函数以char const * const
为参数。
我如何在C#中调用此函数?只使用c# - string
似乎不起作用,因为C#中的函数需要sbyte*
C ++类:
public ref class MyClass
{
public:
void Sample(char const * const Name);
}
错误2参数'1':无法从'string'转换为'sbyte *'
谢谢!
答案 0 :(得分:4)
如果您使用的是托管C ++,则可以使用System.String类
答案 1 :(得分:1)
您需要尝试在C#中将参数转换为sbyte。
Sample((sbyte)nameOfParameter);
那应该可以正常工作。
答案 2 :(得分:1)
IMO最好的方法是在C ++ / CLI中编写一个包装器,使用Marshal::StringToHGlobalAnsi
或类似的东西将System :: String ^转换为char指针,而不是从C#调用该包装器。