C++将字符串传递到C#dll中
本文关键字:C#dll 字符串 C++ | 更新日期: 2023-09-27 18:29:17
我有一个C++应用程序通过wrapper.cpp调用C#dll中的WORD(名称,cpu)函数,它包含一个错误。有人能帮我吗?提前谢谢。
错误C2664:"CsharpDLL::WORD":无法将参数1从"std::string"转换为"System::string^"
C++应用程序
extern "C" _declspec(dllimport) void _stdcall WORD(string name, string cpu);
int main()
{
string name="f";
string cpu="F";
WORD(name,cpu);
}
包装纸.cpp
extern "C" _declspec(dllexport) void _stdcall WORD(string name ,string cpu)
{
return CsharpDLL::WORD(name,cpu); // <-- Error here
}
C#dll
public class CsharpDLL
{
public static void WORD(string name, string cpu)
{
if(cpu=="add")
{
Console.WriteLine("aa");
}
}
您需要从传递到包装函数的每个std::string
的字符数组中构造一个System::String
。
extern "C" _declspec(dllexport) void _stdcall WORD(string name ,string cpu)
{
System::String ^managedName = gcnew System::String(name.c_str());
System::String ^managedCpu = gcnew System::String(cpu.c_str());
return CsharpDLL::WORD(managedName, managedCpu);
}