2012-03-08 78 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