2011-02-23 76 views
4

我們最近從Windows XP遷移到了Windows 7.我們發現C#中的一個應用程序嘗試爲PDA創建dbf文件失敗歪曲錯誤信息 「Microsoft.ACE.OLEDB.12.0」提供程序未在本地計算機上註冊。「通過在64位操作系統中運行我的應用程序作爲32位操作系統,我做了什麼妥協

我發現很多論壇指出我建立我的exe文件爲32位像here

我的問題1)在64位OS機器上是否有其他的驅動程序來訪問dbf? (我知道有一個用於訪問Excel和訪問數據庫)。有什麼東西給dbf?

問題2與我的標題相同。我有一種感覺,通過轉換爲32位,我沒有充分利用64位的優勢。所以我通過這種解決方法失去了什麼?

在此先感謝。

回答

2

x64進程可以訪問更多的指令和更多的寄存器。通過爲x86和任何CPU編譯,您放棄了JIT編譯器使用這些指令和寄存器(以及更多內存)的能力,通常會導致(小)性能損失。但實際上,100個用戶中有99個不會注意到。

他們會注意到的是,如果您爲任何CPU編譯它,您的程序將無法工作,因爲沒有用於dbf文件的64位OLE驅動程序。這種格式不再被使用,所以我不會感到驚訝,因爲我知道微軟沒有編寫,也沒有計劃構建64位版本。

2

爲了迴應第二個問題,除非要將大量數據存儲在內存中,否則64位並沒有給你帶來太多的幫助。大多數開發人員仍然以x86(32位)爲目標,因爲它沒有多少麻煩。也就是說,有情況下,當64位系統運行更好,但正如我所說,它主要是與你想要消耗的內存量有關。

2

在回答你的第一個問題,在64位機通過MS引擎試圖與32位軟件的數據庫訪問需要安裝在數據連接組件:

http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en

+0

恩,「32位數據庫」是一個用詞不當。 – 2011-02-23 15:23:13

+0

@Seva Alekseyev - 夠公平的。我會編輯更簡潔。 – 2011-02-23 15:23:44

+0

謝謝,我試過上面的exe(實際上是64位的http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en&WT.mc_id=soc -n- [TR] -loc- [Services] - [farukc]「。但是看起來像這個解決方案只適用於xls或mdb文件,不適用於dbf。 – franklins 2011-02-23 15:25:44

2

使用x86您正在節省內存並使其更易於使用「編輯並繼續」。在負面方面,你正在限制你的地址空間。參見1一些理由)不使VS 64位和2)製造用於在VS創建32位新的應用程序的默認:

1:http://blogs.msdn.com/b/ricom/archive/2009/06/10/visual-studio-why-is-there-no-64-bit-version.aspx

2:http://blogs.msdn.com/b/rmbyers/archive/2009/06/8/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx

加: http://blogs.msdn.com/b/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

1

我不能回答第1個問題,但對於第2個問題,答案可能是「取決於」。如果正確實施,重度數學運算(例如密碼學)可以在64位系統中獲得顯着的速度提升。而且你也可以解決更多的內存問題(但如果你不使用大量的內存,這可能不是問題)。

在其他情況下,實際上我已經看到64位應用程序相比將它們構建爲32位應用程序(可能由於與較大地址相關的一些開銷)而導致的小型減速。

相關問題