以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  金字塔VBA调用外部DLL出错如何处理?  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=84716)

--  作者:长征万里
--  发布时间:2015/9/3 21:37:05
--  金字塔VBA调用外部DLL出错如何处理?
我做了一个DLL文件,主要功能是将在金字塔VBA里的一些变量数据传到DLL文件,经过DLL文件内部的计算,然后再将结果传回VBA。金字塔代码如下:
Sub APPLICATION_VBAStart()
            Set Wrap = CreateObject("ABC.HX")
End Sub
其中:DLL文件原来是用VB6.0写的,文件名是ABC.DLL,类名是HX。
以前在金字塔3.53版本运行没有任何问题,非常的顺畅。但是到了现在升级到了3.63版本,就不行了,金字塔最后直接崩溃了。
经过咨询客服人员,说贵公司的软件采用新的平台重新编译了,分了32位和64位,DLL文件也需要用新平台编译分32位和64位。
我将原来的文件全部移植到了VB.NET 2010,分了32位和64位。而且经过测试也通过了。
但是到了金字塔后,提示:
编译器错误‘429’,ActiveX部件不能创建对象“ABC.HX”。
请问:如何处理这种问题,毛病可能出现在哪里?
其他同学有无类似情况,不会金字塔有BUG吧?

--  作者:马良
--  发布时间:2015/9/4 10:03:29
--  
首先你要确定金字塔平台是否是你升级到64位后出现的问题
--  作者:长征万里
--  发布时间:2015/9/4 10:15:34
--  
金字塔由3.53自动升级到3.63,以及安装的32位3.63版本、64位3.63版本全部不行。
即3.53能够支持,现在到了3.63不管是32位或者64位都不行。
我用VB2010写了最简单的DLL文件,在金字塔里用Set Wrap = CreateObject("ABC.HX")调用也是不行。
有谁用过VBA调用DLL文件吗?如何解决的。请指点!

--  作者:马良
--  发布时间:2015/9/4 10:32:24
--  
你可以试试在32位下的Excel的vba环境下调用你的这个32位的dll看能否成功
--  作者:长征万里
--  发布时间:2015/9/4 11:14:08
--  
有谁用过Set Wrap = CreateObject("***.**")这条语句,现在还能用吗?
--  作者:王锋
--  发布时间:2015/9/4 12:39:43
--  
Set Wrap = CreateObject("***.** 都不成功的话,是跟金字塔平台没关系的,你好好检查一下你的DLL是否是有问题,或者是没有注册,或者注册的路径有变化了
--  作者:长征万里
--  发布时间:2015/9/5 9:36:17
--  
问题已经解决了,谢谢两位老师。Set Wrap = CreateObject没有问题,非常好!
祝愿金字塔越做越好!越来越强大!