2013-01-01 143 views
1

我對使用32位互操作DLL與64位進程有點困惑。 爲了訪問8TB的內存,我打算爲64位構建我的應用程序,不幸的是它使用了一些構建在32位模式下的統計互操作庫。我沒有該庫的源代碼,因此我無法將其重建爲64位。在64位應用程序中使用32位互操作DLL

this文章中建議創建64位代理過程,該過程將使用IPC(例如WCF)與我的應用進行通信。 Here我們可以找到使用Runtime Callable Wrapper(RCW)的解決方案。哪個更好?我開始實施代孕流程,直到今天,我找到了第二個解決方案,我不知道是否適合我的需求。

我需要提一下,這個統計互操作庫有數百個接口和類。我仍然需要其中一些。我已經開始創建WCF服務,將其中的幾個作爲端點,看起來它會是很多代碼/工作。

我可以使用第二種方法(RCW)與interop dll一起使用嗎?

問候, jotbek

+3

我可能會選擇COM,但這些選項之間可能沒有太大的區別。哪個最方便和容易?現在,在你的位置上,我強烈地考慮失去對這個第三方庫的依賴。我總是喜歡從源代碼構建並依賴於只存在於32位代碼中的黑盒子,這會讓我感到恐懼。有很多好的統計庫。你不能找到一個更有前途的證據嗎? –

+0

不幸的是要使用這個庫。所以你認爲使用RCW解決方案來處理Interop DLL不是問題? – jotbek

+0

我們不知道您的性能要求。 RPC可以有perf。影響。但是,如果它們不重要,那麼可以使用任何RPC爲你工作。很難想象只有一個庫可以滿足您的需求。 –

回答

4

好, 「好」 是一個嚇唬人的名詞。但是,是的,COM代理可以讓它變得更簡單。如果您可以使用系統替代品,那麼在庫設計良好時機率總是很好,那麼您只需要將註冊表項複製到64位密鑰中,並調整其中的一些以使用替代品,並且所有工作都不需要你寫任何代碼。 MSDN起始頁面is here

當圖書館不支持交叉公寓編組時,將無法工作。如果你不知道它是否會嘗試從工作線程調用庫函數。如果這不起作用,那麼不要費心嘗試。如果這個庫很容易導致錯誤崩潰,那麼你會失去「更好」的結果,在進程外情況下總是會變得糟糕。速度可能是一個問題,進程外調用有很多開銷。但你無論如何都堅持着。通過與圖書館所有者聯繫尋求支持,您可以獲得很好的答案而不是SO猜測。

相關問題