[英]Using object across C# & C++ COM Interop
我希望有人可以指出正確的方向。 我正在開發一個Outlook插件,該插件利用C ++和MAPI后端。 我的MAPI知識是相當基礎的,我使用的是MSDN和一本寫於1996年的書,所以那里沒有太多關於C#的討論!
我有一個用C#編寫並可以通過Connector對象訪問的通信層。 它(連接器)已接口並注冊以互操作。 可在Outlook插件(也為C#)和C ++(使用CreateInstance(CLSID)
MAPI)中對其進行訪問
本質上,我想為C#和C ++提供相同的Connector對象。 目前,我正在嘗試通過以下方式利用Singleton實例:
C ++:
Manager.CreateInstance(Manager::CLSID_Manager);
Manager->GetConnector(&m_Connector);
C#:
public IStoreConnector GetConnector()
{
Connector.GetInstance();
}
由於沒有與MAPI后端和C#插件進行任何直接通信,因此C#還創建了自己的manager對象實例,以嘗試獲取相同的實例:
private Manager.Manager manager = new Manager();
private Connector connector = manager.GetConnector();
它可以按預期成功創建對象,但是通過C ++添加到列表的過程並未反映在通過C#創建的消息框中的計數器中。
我假設它取決於C#和C ++在不同的地址空間中,因此getInstance()調用沒有引用相同的實例嗎?
我試圖讓C ++將對文件的引用添加到連接器中,然后讓C#可以訪問剛添加到C ++的相同列表。
任何建議或鏈接良好的指南,將不勝感激
根據是否可以從非托管C ++代碼調用托管C ++,我建議兩種可能的方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.