如何让VB6封装出来的DLL能在纯64位WIN7+OFFICE环境中运行 如果你的OFFICE 是64Bit的,你就别想运行起来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 唉,我反复测试,也得出你说的结论,所以我上网找了一个32位便携版OFFICE2007 SP2,给那些64位的同事,作为过渡方案。 然而,这只是过渡方案,请问谁知道用什么软件、什么方法可以编制32位和64位OFFICE都通用的DLL文件? 在64位Windows下:64位dll在目录c:\windows\system32目录下;32位dll在目录c:\windows\syswow64目录下; 这个我知道,目前的真正的问不是WIN7是32位还是64位,SYSTEM32还是SYSWOW64的问题,真正的问题是VB6封装出来的DLL只能在32位OFFICE下运行,有没有什么别的软件或方法,可以封出同时适用32位和64位OFFICE使用的DLL文件???? 使用VB7支持64位的OFFICE2010,修改一些函数申明和变量,请参考:64位VBA概览让你的VBA宏兼容64位系统 64位进程无法加载32位DLL反之亦然,只有一个特例就是32位进程可以加载ntdll.dll 正常情况下,32位dll应该是可以在64位机器上运行的,之所以不能运行,可能是你的某些操作在64位机器上不兼容。所以我觉得这个问题是不是可以这样解决。先用一个32位dll作为入口,在这个dll中判断系统的位数,如果是32位则加载对应的32位dll,如果是64位,则加载64位的dll。 不是我说反了,而是微软弄反了!syswow64 ==system Windows 32-bits on Windows 64-bit,依然用system32是为了保持程序迁移的兼容性。system32出现时16位都非常流行。根本没考虑到64位会这么快普及。 vb6.0时,还没有 64位的 windows 。 office不建议用64位的。64位的office比32位的目前来看没有任何优势 ActiveX DLL 改成 ActiveX EXE 试试。 这个问题似乎应该反过来问:在 64 位系统下如果支持 32 位的 ActiveX DLL? c:\windows\syswow64\regsvr32 c:\windows\syswow64\xxxxxxx.ocxc:\windows\syswow64\regsvr32 c:\windows\syswow64\xxxxxxx.dll 我记得当时也和楼主一样,满以为能兼容。可是很遗憾,64位office是不能运行32位COM组件的,就目前来说是不行,至于以后就不清楚了。vb6开发的COM组件是32位的,所以根本不能调用。至于为什么,这里有一篇介绍,http://www.cnbeta.com/articles/106641.htm所以,目前我知道的唯一办法,就是使用VB2010开发ADD-IN外接程序,或者开发一个VSTO程序。 我就觉得office兼容问题是个无底洞,我估计楼主想兼容所有版本几乎不可能。 这个我知道,目前的真正的问不是WIN7是32位还是64位,SYSTEM32还是SYSWOW64的问题,真正的问题是VB6封装出来的DLL只能在32位OFFICE下运行,有没有什么别的软件或方法,可以封出同时适用32位和64位OFFICE使用的DLL文件????我强烈推荐ADD-IN EXPRESS 非常感谢上面所有老师的回复,我最后的确没有找出办法,只好“强迫”所有同事安装32位OFFICE,将VB6封装出来DLL文件放在各自电脑中SYSTEM32(32位系统)或SYSWOW64(64系统)文件夹下,从而使大家都能运行我写的小程序。 这种事我以前调试时发现了一个原因:是因为某些ocx,或dll等文件引用的路径不对,所以造成程序在64位系统下无法运行。 是不是可以考虑用VB.net或更高版本,编译2个动态库? 注入后只执行DllMain里面的第一句,怎么回事? 初学者问题,end属性后面只能出现注释 关于timer控件的使用 源代码 MDI与打印问题! 哪位达人用vb开发过LOTUS NOTES数据库,进来介绍经验哈! 关于microsoft internet transfer控件的OpenURL方法的问题 关于input在循环中的奇怪问题 同质人员正在关闭连接 如何以抗锯齿的方式画圆? VB怎样才能新建一个文件夹并在该文件夹下新建一个文件 win7旗舰版下安装vb6(administrator登录安装),出现控件未注册和控件找不到的情况?
64位dll在目录c:\windows\system32目录下;
32位dll在目录c:\windows\syswow64目录下;
这个我知道,目前的真正的问不是WIN7是32位还是64位,SYSTEM32还是SYSWOW64的问题,真正的问题是VB6封装出来的DLL只能在32位OFFICE下运行,有没有什么别的软件或方法,可以封出同时适用32位和64位OFFICE使用的DLL文件????
让你的VBA宏兼容64位系统
反之亦然,只有一个特例就是32位进程可以加载ntdll.dll
syswow64 ==system Windows 32-bits on Windows 64-bit,
依然用system32是为了保持程序迁移的兼容性。system32出现时16位都非常流行。根本没考虑到64位会这么快普及。
ActiveX DLL 改成 ActiveX EXE 试试。
c:\windows\syswow64\regsvr32 c:\windows\syswow64\xxxxxxx.dll
可是很遗憾,64位office是不能运行32位COM组件的,就目前来说是不行,至于以后就不清楚了。
vb6开发的COM组件是32位的,所以根本不能调用。
至于为什么,这里有一篇介绍,
http://www.cnbeta.com/articles/106641.htm所以,目前我知道的唯一办法,就是使用VB2010开发ADD-IN外接程序,或者开发一个VSTO程序。
这个我知道,目前的真正的问不是WIN7是32位还是64位,SYSTEM32还是SYSWOW64的问题,真正的问题是VB6封装出来的DLL只能在32位OFFICE下运行,有没有什么别的软件或方法,可以封出同时适用32位和64位OFFICE使用的DLL文件????
我强烈推荐ADD-IN EXPRESS