九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
DSOFramer 之一:在 64 位系統(tǒng)注冊 DSOFramer


DSOFramer是微軟提供的一款用于在線編輯、調(diào)用Word、Excel等Office程序的ActiveX組件。很多第三方的Office組件都是基于DSOFramer組件開發(fā)的。今天我們不講如何使用DSOFramer組件,網(wǎng)上關(guān)于DSOFramer組件使用方法的文章已經(jīng)很多了,而是講一下在使用DSOFramer組件開發(fā)時的一些坑。

DSOFramer組件的全名是dsoframer.ocx。所有關(guān)于DSOFramer組件使用方法的文章都會告訴你,使用DSOFramer組件,第一步必須在Windows操作系統(tǒng)中注冊該組件。注冊方法很簡單:

  1. 將dsoframer.ocx復(fù)制到%windir%\system32目錄。
  2. 在命令行運行regsvr32命令注冊dsoframer.ocx。

注冊成功后,Windows操作系統(tǒng)會提示“DllRegisterServer 在 dsoframer.ocx 成功”。

.

到目前為止,貌似一切順利。不過如果你像我一樣使用64位Windows操作系統(tǒng),你已經(jīng)不知不覺掉到坑里去了。為什么呢?我們繼續(xù)往下看。

假設(shè),我們已經(jīng)編寫好調(diào)用DSOFramer的程序,當(dāng)我們運行程序時會發(fā)生什么事情?“鐺”!是的,沒錯,系統(tǒng)彈出“應(yīng)用程序無法處理的異?!?。

為什么會出現(xiàn)這個錯誤呢?我們不是已經(jīng)在system32目錄注冊dsoframer.cox了嗎?為什么會提示“沒有注冊類”呢?

是的,問題就在這里。如果我們使用的是32位Windows操作系統(tǒng),那么,OK,程序在運行時不會有任何問題。但是很不幸,我使用的是64位Windows操作系統(tǒng)。使用64位Windows操作系統(tǒng)的朋友可能會發(fā)現(xiàn)在%windir%目錄下除了常見的system、System32目錄以外,還有一個SysWOW64目錄。在32位Windows操作系統(tǒng)中,System32目錄用于存放32位DLL,而在64位Windows操作系統(tǒng)中,據(jù)稱為了保持向下兼容性,System32目錄用于存放64位DLL,而新增加的SysWOW64用于存放兼容的32位DLL(雖然感覺上System32和SysWOW64兩個目錄的作用應(yīng)該完全相反)。

之所以會出現(xiàn)前面的異常,是因為DSOFramer是32位組件。因此,在32位Windows操作系統(tǒng)中,應(yīng)該將其復(fù)制到System32目錄中注冊;而在64位Windows操作系統(tǒng)中,應(yīng)該將其復(fù)制到SysWOW64目錄中注冊,而不是復(fù)制到System32目錄中。

如果在64位Windows操作系統(tǒng)中,我們將dsoframer.ocx復(fù)制到SysWOW32目錄,然后使用regsvr32注冊組件。那么,運行程序時就不會再出現(xiàn)“沒有注冊類”的異常了。

另外,需要注意的是,在Visual Studio的編譯選項中,目標(biāo)CPU選項的默認(rèn)設(shè)置是Any CPU。很多情況下,我們不會改變這個默認(rèn)設(shè)置,而是由.net framework JIT在運行時根據(jù)系統(tǒng)環(huán)境自由決定如何裝載程序。但是,由于DSOFramer是32位組件的原因,在編寫調(diào)用DSOFramer組件的應(yīng)用程序時,應(yīng)該將編譯選項中的目標(biāo)CPU設(shè)置為x86。這樣才能保證程序在運行時能夠在正確的位置找到注冊的DSOFramer組件。

因此,在使用DSOFramer組件時,最佳實踐是:

  1. 在32位Windows操作系統(tǒng)中,將dsoframer.ocx組件復(fù)制到%windir%\System32目錄,并使用regsvr32命令注冊。
  2. 在64位Windows操作系統(tǒng)中,將dsoframer.ocx組件復(fù)制到%windir%\SysWOW64目錄,并使用regsvr32命令注冊。
  3. 在Visual Studio中,將調(diào)用DSOFramer組件項目的編譯選項中的目標(biāo)CPU設(shè)置為x86。

最后,SysWOW64中“WOW64”的含義是“Windows on 64-bit Windows”。所以,你就會明白,為什么在64位Windows操作系統(tǒng)中把dsoframer.ocx組件復(fù)制到SysWOW64目錄了,因為它是運行在“64位Windows上的(32位)Windows”的32位DLL組件。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
comdlg32.ocx下載
解決OCX注冊失敗問題
dsoframer組件詳細(xì)使用(aspx.net)
win7-64位旗艦版下如何注冊ocx控件
使用c#實現(xiàn)dsoframer.ocx的注冊方法
win7系統(tǒng)提示“沒有找到flash.ocx”唯一一種正確解決方法
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服