2012-08-14 89 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++定義的結構。