作者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)
1F:→ pico2k:google "C# string c++" 05/29 00:06
※ 编辑: QQ29 来自: 123.192.93.10 (05/29 00:22)
※ 编辑: QQ29 来自: 123.192.93.10 (05/29 00:41)
※ 编辑: QQ29 来自: 123.192.93.10 (05/29 00:44)