c++ 接口這樣定義:
[id(1), helpstring("方法PrintRR")] LONG PrintRR(VARIANT vaInJson, VARIANT* vaOutJson);
c++接口實現:
LONG CAAACtrl::PrintRR(VARIANT &vaInJson, VARIANT FAR* vaOutJson)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: 在此添加調度處理程序代碼
VARIANT vaTemp;
VariantInit(&vaTemp);
vaTemp.vt = VT_BSTR;
string strTemp = _bstr_t(vaTemp.bstrVal);
VariantClear(&vaTemp);
char * pOutJson = new char[1024];
long lR1 = Printpp(strTemp.c_str(), pOutJson);
VARIANT vaTemoOutJson;
VariantInit(&vaTemoOutJson);
vaTemoOutJson.vt = VT_BSTR;
_bstr_t bstr_t(pOutJson);
BSTR bstr = bstr_t;
vaTemoOutJson.bstrVal = bstr;
delete pOutJson;
pOutJson = NULL;
return lR1;
}
long CAAACtrl::Printpp(const char * pInJson, char *pOutJson)
{
strcpy(pOutJson, pInJson);
return 0;
}
聲明:
private:
long Printpp(const char * pInJson, char *pOutJson);
protected:
LONG PrintRR(VARIANT &vaInJson, VARIANT FAR* vaOutJson);
C# 調用
// Create a string to pass to the COM object.
string helloString = "";
// Wrap the string with the VariantWrapper class.
object var = new System.Runtime.InteropServices.VariantWrapper(helloString);
string strInJson = "helloword";
object objInJson = strInJson as object;
this.axAAA1.PrintRR(objInJson, ref var);
helloString = var.ToString();