这对我来说似乎很奇怪。所有定义都匹配,但似乎调用带有输入array<Object^>^
的函数存在问题。这是我的简要代码:
void WriteCOMPortPannel(array< String ^ >^ ){ \\ Do something};
delegate void WriteCOMPortDelegate(array< String ^ >^ );
array <String^ > ^COM_PORTS = this -> SerialPort ->GetPortNames();
this->Invoke (gcnew WriteCOMPortDelegate(this, &MainForm::WriteCOMPortPannel), COM_PORTS);
在C#中,解决方案是:
this->Invoke (MyDeligate , New Object() COM_PORTS);.
C ++ \ CLI怎么样?是否有任何类型不匹配?
答案 0 :(得分:1)
我猜C ++ / CLI Invoke
错误地将array< String^ >^
误认为它希望保留参数列表的array< Object^ >^
。
您应该尝试将array< String^ >^
包裹在array< Object^ >^
内。
array <String^ > ^COM_PORTS = this -> SerialPort ->GetPortNames();
array <Object^ > ^parameters = gcnew array <Object^ >(1);
parameters[0] = COM_PORTS;
this->Invoke (gcnew WriteCOMPortDelegate(this, &MainForm::WriteCOMPortPannel), parameters);