乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 130|回复: 9

DLL引用是不是只能用绝对路径??

[复制链接]

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2003-12-22 23:20:00 | 显示全部楼层 |阅读模式
在VBA中引用了一个DLL,路径比如为“d:\a\qq.dll",但如果把这个文件夹COPY到另一个盘,比如E盘,程序就没有办法运行了,发现引用只认绝对路径,这要怎么解决?
回复

使用道具 举报

27

主题

105

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
213
发表于 2003-12-22 23:53:00 | 显示全部楼层
刚才给你写了一个比较长得帖子,发表时,失败了,气死我了,
现在再来。
我说得是我得做法,别的我可能不太清楚,
一般来说,引用一个DLL,要将这个DLL在注册表中注册,让后调用,
注册办法,
将这个DLL文件拷贝到Windows目录下得System(system32,具体我不太清楚了,那个目录下得DLL,ocx文件多,就是哪一个目录),让后打开MS-DOS窗口,进入该目录下,运行regscv32 filename.dll即回收到成功注册得信息,让后你到VBA里的'引用'选项下,找到那个注册得DLL,就可以利用找个DLL的函数了
我以前做过一个DLL,用VLisp引用,可以达到目的(成功),但是,用该DLL的函数时,该函数没有着色,不象引用ARX舒服,
用VBA应用的估计会有 一些 提示(不知道怎么描述,呵呵)的功能
现在好久没有上乐筑天下了,游戏,乐筑天下,鱼肉,熊掌 。。。。。。。
等游戏玩溺了,我会回来的,版主不要删掉我得帐号啊
先复制一下,不要又。。。。
回复

使用道具 举报

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2003-12-23 18:17:00 | 显示全部楼层
你也是太久没有来了,VC学的怎么样了?
如果不放到系统目录行不行,因为比如我放到98下的system,但别人用的是2000,可能又没有办法用了!
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2003-12-23 18:54:00 | 显示全部楼层
2楼兄,太谢谢你的方法了.继续请教一下,vlisp中怎样调用vb编的dll?
回复

使用道具 举报

27

主题

105

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
213
发表于 2003-12-24 00:15:00 | 显示全部楼层
首先说一下myfreemind的东西,
凭我的认识,如果DLL注册,DLL是一个系统的资源,任何程序开发语言都可以引用它,当让,要这种语言支持引用组件,比如Autolisp就不行,而Visuallisp可以,不注册它只是一个文件,不能完全算是系统的资源,就只是一个文件(我认为),这就是为什么有时候别人的VB程序放在自己的机器上打开时,说没有控件(组件),就是因为你没有或者没有注册那个控件(组件),你可以通过安装他的打包文件来实现控件(组件)的安装
最后一句话,没有注册过得DLL不能算是真真有意义的DLL,
如果你想要别人的机器用你得DLL,你也要将他的机器注册你得DLL,这是我的三次写这个东西,还是觉得没有怎么写好,不过找个问题不难,你可以多是一下,让后自然就清楚了,
回答一下你得问题,我得VC学得非常的。。。不怎么好,因为时间在游戏,学的一点东西又忘了,我学习的时候,回长来乐筑天下问大家的,呵呵
和我同一个头像的麦克狼兄弟,你得问题一下子说不清楚,那个程序在单位,如果我没有删掉,明天给你传上来,当时是因为Vlisp不能做对话框文件(我不喜欢用DCL,难得去学),所以想到用Vlisp调用VB编译过得调用DialogBox的DLL是一下,结果成功了,高兴了以上午,认为VLisp真好,让后感觉它不能着色,于是想去学习ARX,我就是喜欢乱来,哈哈哈
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2003-12-24 09:34:00 | 显示全部楼层
1、Windows的系统目录在Win95\98\Me系统中是windows\system,在NT内核的操作系统,如win NT\2000\XP系统中是windows\system32,因为这两个都存在,不是TAO兄记不清楚了。
2、在VBA或者ARX代码中显式地声明DLL资源,只是在VBA或者ARX工程中使用这些资源,DLL不能成为windows系统资源,只有用TAO兄介绍的方法注册为windows系统资源才能真正成为各种编程语言共享的资源。
3、将DLL注册为windows资源后,VBA中不必再Declare DLL资源,可以选择“工具”->“引用”选项引用这些资源。
4、VLISP引用DLL资源应该没有VBA方便,TAO兄何不专门写个帖子介绍?
回复

使用道具 举报

41

主题

657

帖子

9

银币

中流砥柱

Rank: 25

铜币
821
发表于 2003-12-24 12:01:00 | 显示全部楼层
是啊,TAO写个有时间的话写个详细点的帖子嘛
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-12-24 12:40:00 | 显示全部楼层
DLL分两种,一种是标准的DLL,另一种是ActiveX DLL。
标准的DLL不需要注册,比如系统的API就是这样,只能程序能查找到它所在的路径就行,使用时必须使用Declare声明才行。
AcitveX DLL,就如VB中创建的,必须注册,注册方法可以通过打包安装、使用Regsvr32,或者第三方组件来注册。使用时一般要先引用,然后通用New或者CreateObject来创建对象的实例。
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2003-12-24 19:07:00 | 显示全部楼层
Taoyimaier大虾,我主要是出于保密的原因,想用vb编成activex dll,然后用lsp调用(别的语言基本不会).
另外关于这方面的相关知识,比如如何制作安装包等等,如果知道也请一并赐教.
回复

使用道具 举报

27

主题

105

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
213
发表于 2003-12-24 22:06:00 | 显示全部楼层
首先,请不要叫我大侠,我,一介山野村夫,呵呵,上面的Efan和Lee绝对是两位人物,比较不幸的告诉你,那个本来在单位程序,我可能重新安装机器的时候,没有保存,给格式化了,其实那个程序并不是很难,我只是测试一下VLisp有没有这个功能,当时,我也是在乐筑天下的二次开发栏目里发现了这个技术的文章,到单位上试验了一下,现在部分东西都忘掉了,本来打算将那篇文章给你的,但是现在没有找到,所以打算明天写一点相关的东西把,年底工作又很多,我要抓紧时间,还有,我说得都是我得一些看法,可能有些地方不够全面和准确,希望版主门提出来,不要让一些错误的思想灌输到大家的头脑里去了,看明天晚上我能不能高出来,
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 11:47 , Processed in 0.371351 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表