2011-12-28 189 views
8

所以前段時間我正在研究一個我知道即將推出的問題。我們有一個鏈接到某個庫的32位版本的DLL。這個庫沒有x64版本可供我們使用,我們在替換它方面沒有實際的選擇。通過COM在64位進程中使用32位DLL

當我執行這個初步調查時,我發現了一篇或兩篇描述64位進程可以通過COM「服務器」使用32位DLL(Windows)的方法。不幸的是,我失去了我已經保存的鏈接,現在我一直在尋找一個多小時沒有運氣。

有人在這裏熟悉我描述的過程嗎?我不能爲了我的生活記住我曾經用哪種魔法咒語在搜索中拉出正確的結果,當然,現在是實施時間。預先感謝您提供的任何幫助,我將在此期間繼續搜索。

+0

我想你可以通過谷歌搜索「COM代理人」和「找到你的鏈接回COM +託管「。 – 2011-12-28 19:37:49

+0

@HansPassant:這是我需要的詞。謝謝。 – 2011-12-28 19:44:55

+0

(主要是因爲其他人陷入了答案)請記住,這樣做涉及進程間數據編組,這可能代價高昂 - 它不是自動修復所有問題的銀彈。 – snemarch 2011-12-29 11:11:57

回答

5

這可能是不夠的,但它可能讓你開始:Process Interoperability

在64位Windows中,一個進程外的32位COM服務器可以與64位客戶端進行通信,和一個進程外64位COM服務器可以與一個32位客戶端進行通信。 因此,如果您有一個不支持COM的32位DLL,則可以將其封裝在一個進程外COM服務器中,並使用COM封送來自64位進程的調用。

而且Accessing 32-bit DLLs from 64-bit code

遷移您的32位Windows應用程序在64位機上可能會有問題,如果你有32位的DLL文件,你不能重新寫入。 Mike Becker向您展示瞭如何使用內置IPC機制從64位代碼訪問32位DLL ...

+0

這就是我正在尋找的鏈接。謝謝你,先生。 – 2011-12-28 19:44:28

+0

不客氣。我有第二個鏈接添加書籤,當我需要它:) – crashmstr 2011-12-28 19:45:36

相關問題