明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6362|回复: 17

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

  [复制链接]
发表于 2003-12-22 23:20:00 | 显示全部楼层 |阅读模式
在VBA中引用了一个DLL,路径比如为“d:\a\qq.dll",但如果把这个文件夹COPY到另一个盘,比如E盘,程序就没有办法运行了,发现引用只认绝对路径,这要怎么解决?
发表于 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应用的估计会有 一些 提示(不知道怎么描述,呵呵)的功能
现在好久没有上明经了,游戏,明经,鱼肉,熊掌 。。。。。。。
等游戏玩溺了,我会回来的,版主不要删掉我得帐号啊
先复制一下,不要又。。。。
 楼主| 发表于 2003-12-23 18:17:00 | 显示全部楼层
你也是太久没有来了,VC学的怎么样了?

如果不放到系统目录行不行,因为比如我放到98下的system,但别人用的是2000,可能又没有办法用了!
发表于 2003-12-23 18:54:00 | 显示全部楼层
2楼兄,太谢谢你的方法了.继续请教一下,vlisp中怎样调用vb编的dll?
发表于 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,我就是喜欢乱来,哈哈哈
发表于 2003-12-24 09:34:00 | 显示全部楼层

TAO兄说得很好,我补充一下他记不清楚的

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兄何不专门写个帖子介绍?
 楼主| 发表于 2003-12-24 12:01:00 | 显示全部楼层
是啊,TAO写个有时间的话写个详细点的帖子嘛
发表于 2003-12-24 12:40:00 | 显示全部楼层
DLL分两种,一种是标准的DLL,另一种是ActiveX DLL。
标准的DLL不需要注册,比如系统的API就是这样,只能程序能查找到它所在的路径就行,使用时必须使用Declare声明才行。
AcitveX DLL,就如VB中创建的,必须注册,注册方法可以通过打包安装、使用Regsvr32,或者第三方组件来注册。使用时一般要先引用,然后通用New或者CreateObject来创建对象的实例。
发表于 2003-12-24 19:07:00 | 显示全部楼层
Taoyimaier大虾,我主要是出于保密的原因,想用vb编成activex dll,然后用lsp调用(别的语言基本不会).
另外关于这方面的相关知识,比如如何制作安装包等等,如果知道也请一并赐教.
发表于 2003-12-24 22:06:00 | 显示全部楼层
首先,请不要叫我大侠,我,一介山野村夫,呵呵,上面的Efan和Lee绝对是两位人物,比较不幸的告诉你,那个本来在单位程序,我可能重新安装机器的时候,没有保存,给格式化了,其实那个程序并不是很难,我只是测试一下VLisp有没有这个功能,当时,我也是在明经的二次开发栏目里发现了这个技术的文章,到单位上试验了一下,现在部分东西都忘掉了,本来打算将那篇文章给你的,但是现在没有找到,所以打算明天写一点相关的东西把,年底工作又很多,我要抓紧时间,还有,我说得都是我得一些看法,可能有些地方不够全面和准确,希望版主门提出来,不要让一些错误的思想灌输到大家的头脑里去了,看明天晚上我能不能高出来,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-21 03:36 , Processed in 0.207238 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表