指定的函数与委托类型'void(void)'不匹配

时间:2011-06-27 02:15:27

标签: c# visual-c++ interop marshalling

Error C3352: 'void ServerClass::ActionMethod(int,int,System::String ^)' : 
  

指定的函数与委托类型'void(void)'不匹配D:\ westside \ NetSockets \ win32project \ Win32.cpp 70 1 win32project

简而言之,win32应用程序使用C#库。当win32应用程序在C#库中调用构造函数方法时,会出现上面的错误。下面是代码。我不确定我错过了什么。

win32应用程序代码

头文件

public ref class ServerClass
{
NetEvents::NetEventArgs^ args;
NetSockets::NetSocket^ server;
public:
void ActionMethod(int iCommand, int iClientIndex, System::String^ message);
void StartServer();
};

源文件

void ServerClass::ActionMethod(int iCommand, int iClientIndex, System::String^ message)
{

}

void ServerClass::StartServer()
{   
server = gcnew NetSockets::NetSocket(gcnew System::Action(this, &ServerClass::ActionMethod1));
}

C#库代码

namespace NetSockets
{
public class NetSocket
{
    Action<int,int,string> actClient;

    public NetSocket(Action<int, int, int> action)
    {

    }

    public NetSocket(Action<int, int, string> action)
    {
        this.actClient = action;
    }
}
}

1 个答案:

答案 0 :(得分:2)

System.Action委托是一个委托类型,没有返回void的参数。

正如错误消息所示,您的功能与此不匹配。

您需要使用其他委托类型,例如Action<int, int, string>