【发布时间】:2011-11-28 08:26:13
【问题描述】:
我有一个 ATL COM 组件方法,它有一个 [out] BSTR* 参数。我已经从我的 .NET 应用程序中创建了对该组件的引用,该应用程序将参数视为输出字符串类型。 COM 组件像这样分配这个字符串:
USES_CONVERSION;
*sText = SysAllocString(T2OLE(psText));
其中 psText 是一个字符*
但是,当方法调用返回时,.NET 代码仍然有一个空字符串。任何人都可以看到有什么问题吗?
【问题讨论】:
-
你能在这里发布完整的功能吗?它的声明和实际的 psText 是什么?
-
您使用的是哪个版本的 ATL?
-
当 psText 是 char* 时,您应该使用 A2OLE()。
-
此调用是否需要编组(称为进程间或 .NET 和 COM 组件不在同一个单元中)?
-
这对返回值有什么影响?
标签: c# .net com com-interop