2009-12-11 93 views

回答

21

運行64位操作系統上有一些副作用,會在某種程度上是顯而易見的。最常見的問題:

  • 在Visual Studio中編輯並繼續將不起作用。您可以通過強制.NET應用程序以32位模式運行來解決此問題。項目+屬性,生成選項卡,平臺目標= x86。解決VS2013。

  • 如果您在.NET應用程序中使用任何ActiveX控件或COM組件,則可能發現程序不再有效,因爲您的計算機沒有相應的64位版本的COM服務器。您會收到錯誤0x80040154,REGDB_E_CLASSNOTREG,「未註冊的類」。與上述相同。

  • 64位調試器不支持混合模式調試,您必須提交到僅託管或僅限本機調試。只要您沒有64位特定問題,就可以像上面一樣修復。解決VS2010。

  • 如果在需要IntPtr的情況下聲明uint或int的P/Invoke聲明寫得不好,將會在64位模式下停止工作。您通常會遇到AccessViolation異常或失敗返回碼。或PInvokeStackImbalance MDA警告。您不應該在查找錯誤時遇到任何問題,只需修改聲明即可。

  • 幾個傳統報廢的Microsoft庫在64位版本中不可用。這是Microsoft Access數據庫最常遇到的問題。與上述相同。

  • 您必須使用正確版本的Regasm.exe來註冊[ComVisible]程序集。根據客戶端程序是以64位還是32位模式運行,從Framework或Framework64中選擇一個。或者,如果你想讓服務器都可用的話。

  • 一些COM類型庫在其方法聲明中包含位相關的參數。 ADO 2.8是一個值得注意的。一定要使用Tlbimp.exe的正確位數來生成正確的COM互操作程序集,Visual Studio不會這樣做。與Regasm.exe相同的方法

  • 32位程序具有與64位程序不同的註冊表視圖。特別是HKCR和HKLM \ Software配置單元是虛擬化的。在Regedit.exe中,32位可見鍵位於HKLM \ Software \ Wow6432Node項下。這會對使用註冊表的程序造成許多微妙的問題。 .NET 4 RegistryKey.OpenBaseKey()允許指定你想要的視圖。

  • 再次對於COM,您將使用Regsvr32.exe的正確位數來註冊非託管COM服務器(不是.NET服務器,它們使用Regasm.exe)。對於64位服務器,使用c:\​​ windows \ system32中的一個,對於32位服務器使用c:\​​ windows \ syswow64。

  • 文件系統中的文件夾是虛擬化的,特別是c:\ windows \ system32和c:\ program files。一個32位程序將會看到c:\ windows \ syswow64和c:\ program files(x86)。

  • 安裝人員需要考慮所有上述問題。

+0

'regasm'確實花了我很多時間來弄清楚。謝謝! – kizzx2 2010-06-09 17:52:15

1

我不會擔心太多,如果每個程序都有一個x64下載鏈接,然後使用它。如果沒有,那麼你的代碼將通過WOW64仿真運行。它看起來像你喜歡它正常運行。

請參閱this related question我回答了大約5分鐘前。

WOW64指WINDOWS32上windows64 ,它是一個透明仿真 laywer允許x86程序在x64的操作系統上運行 。如果在x64 Windows操作系統上運行 x86 Windows程序,WOW64將自動使用 。

1

我正在運行Windows 7 Ultimate x64。

  1. Visual Studio 2008正常工作。
  2. 我使用的是Subversion,但不是烏龜。 AnkhSVN工作正常。

其他我沒有經驗的人。

0

我使用的大多數軟件與x64沒有任何問題,自XP x64出現問題以來已經有幾年了,而且人們似乎已經趕上了x64。

但是,在x64中進行開發的主要問題是,在Visual Studio中以x64模式運行時,無法在調試時編輯代碼。

您必須使用x86作爲目標平臺才能這樣做。

這是原因的beta對Visual Studio 2010的默認目標平臺而不是X32任何平臺的一個一個...

相關問題