[問題] C# access C++ COM的疑問
這個問題其實我也不知道適不適合波在這邊
因為目前是C# 要存取C++ 但是不曉得為啥 string的方式都不可行
網路上也找不到完整的教學....
貼在這邊請有經驗的版友給點幫助
謝謝
作者: QQ29 (我愛阿蓉) 看板: C_and_CPP
標題: [問題] C# access C++ COM的疑問
時間: Sat May 29 00:01:10 2010
※ [本文轉錄自 C_Sharp 看板 #1B_zaxv_ ]
作者: QQ29 (我愛阿蓉) 看板: C_Sharp
標題: [問題] C# access C++ COM的疑問
時間: Fri May 28 22:54:48 2010
是這樣的
我C#想要傳入C++ function幫我new一塊空間然後存取
目前 C# 宣告的interface 是
internal interface MyCOM
{
void GetHelloString(out string text, out int stringLength);
}
我呼叫時 使用
string inputString = null;
int stringLength = 0;
COMObj.GetHelloString(out inputString, out stringLength);
再來是C++ 的 定義
HRESULT __stdcall COMClass::GetHelloString(LPWSTR* pwszText, int
*pnNameLen)
{
這邊如果我 *pnNameLen = 5566;
可以成功給int值
可是對於pwszText
因為C#的string 對應的是C++的WCHAR*...
所以我就宣告pointer to pointer=> LPWSTR*
C#那邊我也是傳 string的reference (我觀念就類似C++的傳 pointer的address)
這邊我就很簡單的
用 *pwszText = new WCHAR [10];
(*pwszText)[0] = L'C';
(*pwszText)[1] = L'O';
(*pwszText)[2] = L'M';
(*pwszText)[3] = L'\0';
return S_OK;
可是我怎麼樣都無法成功幫這string 給值...
}
請問我是不是搞錯了?
另外就是 如果我C++這邊是收一個自訂型態的class or struct...
我C#那邊只要class定義的一樣 可以這樣傳嗎?
現在連string都無法搞定了....也沒辦法try其他的
剛剛在C#寫
char[] p = { 'H','e','l','l','o'};
p[2] = '\0';
Console.WriteLine(p);
竟然印出He lo
奇怪遇到\0不是應該就停了嗎....真的很不解
請教各位
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.93.10
※ 編輯: QQ29 來自: 123.192.93.10 (05/28 23:06)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.93.10
※ 編輯: QQ29 來自: 123.192.93.10 (05/29 00:02)
→
05/29 00:08, , 1F
05/29 00:08, 1F
→
05/29 00:09, , 2F
05/29 00:09, 2F
※ 編輯: QQ29 來自: 123.192.93.10 (05/29 00:21)
→
05/29 00:36, , 3F
05/29 00:36, 3F
→
05/29 00:36, , 4F
05/29 00:36, 4F
※ 編輯: QQ29 來自: 123.192.93.10 (05/29 00:40)
※ 編輯: QQ29 來自: 123.192.93.10 (05/29 00:44)
推
06/06 10:50, , 5F
06/06 10:50, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章