-1

我有一个 C++ 应用程序通过 wrapper.cpp 在 C# dll 中调用 WORD(name,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");
    }
}
4

1 回答 1

1

您需要从传递给包装函数System::String的每个字符数组中构造一个。std::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);
}
于 2013-08-27T04:35:10.303 回答