簡體   English   中英

64位系統上的32位庫

[英]32 bit library on 64 bit system

如果我在64位系統上使用32位庫,它會導致任何問題嗎?

可能是什么不相容?

我知道這個問題太模糊了。 一個例子 :

我嘗試在Windows 7 64bit上使用VS2010設置FreeGlut 32位庫。 一開始有很多問題。所以,我一直在尋找64位FreeGLUT,認為32位FreeGlut可能與64位窗口沖突。 但后來我設法用我的64位Windows運行我的32位FreeGlut,沒有任何問題。

問題是,如果程序中有任何東西,我們應該在使用那些與系統不匹配的庫時進行調查。 (64位操作系統上的32位庫)

64位Windows完全能夠運行32位應用程序。 事實上,Visual C ++的默認配置是構建一個x86應用程序,而不管它運行的是什么操作系統。

一些陷阱 ,你必須要知道上運行64位Windows 32位應用程序時的感覺。 例如,有注冊表重定向 (為了避免它將KEY_WOW64_64KEY傳遞給例如RegOpenKeyEx )。 還有文件系統重定向。 例如,在讀取系統配置值時,這些是要記住的重要事項。

另外,請注意,您不能在同一進程中混合使用32位和64位。 您的32位應用程序不能使用64位DLL或靜態庫。

這與操作系統無關 - Windows不關心您的代碼是32位還是64位。 重要的是你的過程與它關心加載的所有庫的位數相同 - 它們必須都是相同的位。

您可能對此鏈接感興趣,解釋了在移植到64位時常見的編譯器錯誤。 它可以幫助您解決問題。

為了更直接地回答你的問題,有些東西可能會使64位庫在64位環境中中斷,但是在SO答案中分享的信息太多了。

此鏈接是與64位系統開發相關的MSDN索引,您可能也會對此感興趣。

Visual Studio可以根據項目設置編譯32位或64位。

可能,你要問的問題是關於將32位庫鏈接到64位程序

答案是:
您不能直接鏈接到64位程序內的32位代碼。
唯一的選擇是編譯一個可以在64位平台上運行的32位(獨立)程序(使用ia32),然后使用進程間通信從64位程序與它進行通信。

您的問題可能是如何開發專門針對64位與32位硬件本機運行的代碼。 有對信息在這里 特別是,您必須按照此處的說明啟用64位構建工具。

如果要構建64位二進制文​​件,則需要鏈接64位庫。 請注意,32位二進制文​​件應該在64位Windows上運行正常,因此您可能不需要遇到此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM