Dot-Net
x64 應用程序可以使用 x86 程序集嗎?反之亦然?
我的應用程序建構為 x64 應用程序。遷移到 VS2010 後,我遇到了一些問題,這些問題似乎與引用的 dll 中的某些 x64/x86 不匹配有關。現在我正在轉向 .NET4,我遇到了更多類似的問題。
我的問題是:關於混合 x64 和 x86,我需要採取哪些預防措施。可以做到嗎?我認為 x64 應用程序應該能夠毫無問題地使用 x86 dll。不?另一種方式呢?x86 應用程序可以引用 x64 dll - 只要它在 x64 平台上執行?我需要注意哪些陷阱?
不可以,64 位程序只能載入 64 位 DLL,而 32 位程序只能載入 32 位 DLL。您可能想到的是 64 位作業系統可以執行 32 位程序。
.NET 的主要問題是 - 在 VS2010 之前 - 可執行項目預設為“AnyCPU”,這意味著它將以其執行的作業系統的“本機”格式載入(因此對於 32 位版本的 Windows 和64 位適用於 64 位版本的 Windows)。這樣做的問題是,如果您在 32 位 Windows 上測試您的應用程序(例如),那麼如果您載入 32 位 DLL 並嘗試在 64 位 Windows 上執行,它可能會中斷。
在 VS2010 中,他們預設所有可執行項目為“x86”(即 32 位),這(在大多數情況下)緩解了這個問題。