明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1627|回复: 2

自编的dll文件怎样调用?

[复制链接]
发表于 2003-12-15 21:05:00 | 显示全部楼层 |阅读模式
1. 启动Visual Basic 5 or 6;
2. 在New Project Wizard中选择ActiveX DLL;
3. 把工程名改为"MyProject";
4. 在工程中有一个缺省的类模块,把它的名称改为"MyClass";
5. 添加一个函数或者子例程到类模块中。例如:

' This function takes two arguments, and will return a list of data to the calling function
Public Function MyFn(ByRef arg1 as Integer, ByRef arg2 as Double) As Variant
  myForm.Show vbModal
  ' Create a list of items to return to the caller (the items are in this case purely arbitrary)
  MyFn = Array(1.0,"Arbitrary string",2)
End Function

(这里,myForm是一个你必须添加到工程中的表格。同时切记MyFn是一个函数,它将返回一个值或者一组值给调用例程。)

6. 点取File -

Make MyProject.dll。这就会生成一个DLL并且把它注册为COM。(如果你想在其他机器上运行此DLL,你需要首先确认在所有的机器上安装并注册了这个DLL。这通常需要你用Visual Basic生成一个安装包。)
7. 如果你想从Visual LISP中使用此DLL,你需要定义一个简单的函数,并且把他加载到AutoCAD中:

(defun showDialog (/ acadApp vbApp retVal retList)
;; required in AutoCAD 2000, not R14
(if (car (atoms-family 1 '("vl-load-com"))) (vl-load-com))
;; get the main AutoCAD application object
(setq acadApp (vlax-get-acad-object))
;; load VB ActiveX DLL into AutoCAD's address space (either line will work)
;;(setq vbApp (vlax-invoke acadApp "GetInterfaceObject" "MyProject.MyClass")
(setq vbApp (vla-GetInterfaceObject acadApp "MyProject.MyClass"))
(if (not vbApp)
   (princ "\nError loading ActiveX DLL.")
   (vlax-invoke vbApp "MyFn"
                       7        ; arg1, an integer
                       1.5      ; arg2, a 'double'
   )
)
)


以上是用vb5编的dll文件,其中有些部分看不懂,请赐教:
1 "如果你想在其他机器上运行此DLL,你需要首先确认在所有的机器上安装并注册了这个DLL。这通常需要你用Visual Basic生成一个安装包。"是什么意思,具体怎样做?
2 这个dll怎样用visual lisp调用,命令是什么?我照上面所说的编了一个lisp文件,在cad2000中也加载了,但是不知怎样激活它.请哪位高手根据dll源文件告知如何用lisp文件调用,最好是源程序(我对lisp一窍不通).
发表于 2003-12-16 11:57:00 | 显示全部楼层
第1个问题是关于组件的注册,组件必须注册之后才能使用,所以直接拷贝的就不能使用。有两种方式,1、做成安装包,安装程序会自动注册它。手工注册使用Regsvr32。
第2个问题是VL调用DLL的问题,应该使用vlax-create-object创建组件的实例,才能使用它的功能。
 楼主| 发表于 2003-12-16 18:00:00 | 显示全部楼层
能不能在详细点,第一步,第二步.....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 12:42 , Processed in 0.169636 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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