我有一個包裝本機32位dll的C++/CLI程序集。C++/CLI 64位COM
該程序集既用於.Net又用於COM(辦公室)。
現在我有一個運行64位辦公室的客戶。
是否可以創建一個使用本機32位dll並導出64位com接口的C++/CLI程序集?
我有一個包裝本機32位dll的C++/CLI程序集。C++/CLI 64位COM
該程序集既用於.Net又用於COM(辦公室)。
現在我有一個運行64位辦公室的客戶。
是否可以創建一個使用本機32位dll並導出64位com接口的C++/CLI程序集?
不,您不能在Windows上的一個進程中混合使用不同位數的代碼。您需要強制32位代碼進入單獨的進程或轉換該DLL。
後者很可能通過使用COM +(或大部分相同的DCOM)來實現。這是我們通常使用本機C++代碼所做的。我不確定C++/CLI程序集有多容易。
以某種方式說話,是的。
繼續編譯C++/CLI代碼爲32位,因此它可以使用C++ interop使用本地庫。
然後,您必須將其配置爲在充當Office 64插件時作爲進程外COM服務器加載。使用原生COM代碼,midl會自動生成64位代理。在註冊標記爲COMVisible
的.NET類時,應該有類似的功能來創建代理。
64位COM接口將包含在自動生成的64位代理DLL中,因此這並不違反流程中所有模塊的位必須相同的規則。
這就是我所懷疑的。謝謝 – adrianm 2010-09-03 10:00:30
由於Office/plugin接口已經是COM,所以不妨在C/C++和本地庫之間引入新的轉換層。 – 2010-09-03 14:21:25