以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  自定义dll文件的加载问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=148073)

--  作者:李润Rex
--  发布时间:2017/2/22 15:31:13
--  自定义dll文件的加载问题
老师,你好。我在后台VBA程序中使用了自定义的DynamicActive控件(名称为UserWrap),并在控件中使用了UserWrap.register方法注册了一个自定义的dll文件,但是会报错说无法加载该dll,请问应该将dll文件放在金字塔目录的什么位置可以解决这个问题?
--  作者:王锋
--  发布时间:2017/2/22 16:11:38
--  
建议您把vba代码贴过来我们这边运行看一下哦,不然不好猜测问题的
--  作者:王锋
--  发布时间:2017/2/22 16:17:10
--  
您大概的意思是不是你自己做了个DLL控件,然后想在VBA代码中调用你自己的做的DLL控件?
--  作者:李润Rex
--  发布时间:2017/2/22 16:18:34
--  
我们建立控件的格式是这样的。其中user32.dll文件应该放在金字塔目录下的什么地方,才可以保证正常读取?(放在金字塔根目录或者fml目录下会显示报错为“1025:cound not find or load the dll”)
Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "user32.dll","Showstr","i=s","f=s", "r=f" 

--  作者:王锋
--  发布时间:2017/2/22 16:20:24
--  

user32.dll是系统的DLL文件,这个是不需要你去做特别处理的。

参考范例

 

Set Wrap = CreateObject("DynamicWrapper")
Wrap.Register "user32.dll","FindWindow","i=ss","f=s", "r=l"
WindowHandle = Wrap.FindWindow("", "
无标题 - 记事本")
If WindowHandle=0 then
MsgBox "
发现窗口"
Else
MsgBox "
没发现"
End If


--  作者:李润Rex
--  发布时间:2017/2/22 16:27:01
--  
我们上述描述的dll是自己编写的,不是系统自定义的dll(上述描述中使用user32的名字只是为了方便),为了避免误解,我们不妨叫它name1.dll,如果有这样的dll文件,上述问题怎么解决。


--  作者:王锋
--  发布时间:2017/2/22 16:29:51
--  

这个系统dll模式你自己写的话,我们有更简单便捷的调用方式,参考

 

利用金字塔的VBA与C++的混合编程来实现复杂的二次开发及交易功能

http://www.weistock.com/bbs/dispbbs.asp?boardid=5&Id=11505


--  作者:李润Rex
--  发布时间:2017/2/22 16:35:43
--  
好的,我们可能在dll本地注册段出了一些问题,感谢您的帮助。