2012-03-08 75 views
1

我開發了一個MFC ActiveX控件,並創建了必要的cab文件和inf文件。它在32位IE中完美工作。當我嘗試訪問它在64位IE瀏覽器,它提示我安裝,但當我嘗試訪問該函數失敗,錯誤消息「對象不支持此屬性或方法」在我調用該函數的行中。我是否需要爲64位IE做特別的事情?在64位IE中安裝ActiveX控件

如所提到的由YMS我編譯我的控制在64位模式和產生的2個CAB文件。我通過網頁修改,以下載合適CAB文件的dll不能在64位applications.You直接使用

<script language="jscript"> 
document.write("<OBJECT width='600' height='300' id='ActiveXPowUpload' " 
    + "CLASSID='CLSID:FB98CEED-9DE1-4517-B30C-CDA19C6D150B' "); 
if(navigator.cpuClass.toLowerCase() == "x64") { 
    document.write("codebase='ActiveXPowUpload-x64.cab#Version=1,0,0,1'>\n"); 
} else { 
    document.write("codebase='ActiveXPowUpload-x86.cab#Version=1,0,0,1'>\n"); 
} 
document.write("<param name='UploadURL' value='http://hostname/path/to/upload/script.aspx' />\n"); 
document.write("<param name='EnablePopupMenu' value='false' />\n"); 
<!-- other parameters --> 
document.write("</OBJECT>\n"); 

+0

我想你創建了兩個不同的DLL,每個CPU架構一個,對不對? – yms 2012-03-08 04:17:50

+0

@yms不,我只是想用一個ocx文件 – Jeeva 2012-03-08 04:21:26

回答

1

32位需要爲每個CPU架構一個DLL。

64位版本的Windows提供了兩個不同的註冊表存儲區,一個用於32位應用程序,另一個用於64位應用程序,因此您可以使用相同的GUID註冊dll和類型庫,每個應用程序將根據爲其構建的CPU架構。

+0

我應該在項目設置中進行任何更改嗎? – Jeeva 2012-03-08 04:37:17

+0

是的,您需要將其配置爲64位並重新構建,如果您不注意某些細節,則可能需要更改代碼。請參閱:[常見的Visual C++ 64位移植問題](http://msdn.microsoft.com/en-us/library/3b2e7499(VS.80).aspx) – yms 2012-03-08 04:47:12

+0

我已經創建了64位的cab文件,它工作正常。現在我有2 CAB文件64&32。我應該如何使HTML加載適當的出租車? – Jeeva 2012-03-08 05:51:04