2012-08-14 92 views
0

背景揭露C++ COM数据结构,以C#

这可能是令人难以置信的碱性的,或者它可以是完全不可能的。对于COM新来说,我不知道,并且由于我的有限COM语汇,Google让我失望了。

我有一个ATL/MFC C++ COM对象,内部定义了许多数据结构。 我也有一个C#项目引用这个COM对象。在C#中,我可以调用通过C++端.IDL文件公开的方法并获得有效结果(最终)。

问题

我想用.idl文件以某种方式暴露100层左右的C++的数据结构以C#(优选不缠绕每一个单独地)。然后在C#中,我只需填充适当的结构并调用将数据结构传递给C++的COM方法。

基本上,我想重用C#中已定义的C++结构。这可能吗?如果是这样,怎么样?

如果很重要,我使用Visual Studio 2010和.NET 4 Framework。

谢谢你一堆。

回答

0

事实证明,我试图把结构放在IDL文件的错误位置。我试图将其添加到library定义中,并且出于任何原因,这没有奏效。

在接口定义放置它结束了工作得好:

... 
interface Icontrol : IDispatch{ 
[ 
uuid(...), 
version(1.0) ] 
typedef struct fake 
{ 
    int x; 
    int y; 
    int z; 
} fake; 
[id(1)] HRESULT open_connection([out,retval] VARIANT_BOOL* result); 
... 

这不回答,如果你的类型不1映射做什么的问题:1,以C#类型,但至少我可以在C#中使用C++定义的结构。