2009-12-09 57 views
0

我接觸到COM一些C#接口:C#COM服務器 - 測試在C++

interface IMyInterface 
{ 
    IMyListObject[] MyList 
    { 
    get; 
    } 
} 

interface IMyListObject 
{ 
//properties that don't matter 
} 

到目前爲止,我測試我們的組件是如何接觸到COM從C++和大部分工作就好了。

我目前的問題是在一點我有2個IMyInterface實例,需要從一個MyList複製到另一個。

如果我只是把這個在C++:

myInterfaceB->MyList = myInterfaceA->MyList; 

這給E_POINTER的HRESULT。

MyList返回一個SAFEARRAY *,等效代碼在C#中工作得很好。

我通常不是C++開發人員,我該如何解決這個問題?

回答

2

不確定E_POINTER是否合理,或者它爲什麼會在C#中工作。它不能工作,你的MyList屬性沒有屬性設置器。它並不是真的需要一個,你不必改變數組,只需要改變數組的內容。使用SafeArrayXxxx()函數,使用ATL CComSafeArray或MFC COleSafeArray包裝器可以更輕鬆地進行操作。

+0

問題是我暴露數組作爲類,而不是暴露給com的接口。有一些免費的答覆點。 – jonathanpeppers 2009-12-09 18:41:53