1
JSON 문자열을 매개 변수로 가져 오는 C++ dll에서 메서드를 호출하려고합니다. json 형식 문자열에 포함 된 매개 변수 중 하나는 메서드가 호출 될 때 호출되어야하는 콜백 함수의 주소를 나타내는 부호없는 int입니다. 그것은C에서 메서드 포인터를 C++ 메서드에 정수 매개 변수로 보내기
Json::Value jsval;
jsval["cmd"] = "logon";
jsval["Arg"]["IP"] = szIP;
jsval["Arg"]["PORT"] = nPort;
jsval["Arg"]["CALLBACK"] = (unsigned int)TheMsgCallback;
Json::FastWriter writer;
std::string sender = writer.write(jsval);
JScmd((char*)sender.c_str())
그리고 여기
Delegate callbackDelegate = new Action<int, IntPtr, ulong, int, int>(messageCallback);
IntPtr p = Marshal.GetFunctionPointerForDelegate(callbackDelegate);
string s = Converter.Serialize(new loginRequest() { Arg = new ArgParam() { IP = "10.0.0.121", PORT = 7020, CALLBACK = (uint)p } });
JScmd(s);
문제는 내가 C#에서 동일한 작업을 수행하려고 할 때 나는 C#에서 동일한 작업을 수행하려고하는 방법이다 : 여기가 C++에서 호출되는 방식입니다
Marshal.GetFunctionPointerForDelegate 일을, 나는이 라인 상에 에로을하지 않았다 당신은 알려 주시기 바랍니다이 문제를 해결하기 위해 어떤 제안이있는 경우
말한다 (210)는 지정된 형식은 제네릭 형식 정의
이 아니어야합니다.