乐筑天下

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

Lisp调用VB.net生成的TLB

[复制链接]

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2010-7-31 02:14:00 | 显示全部楼层 |阅读模式
1.打开visual studio 2005,新建一个项目,模板选择"类库";
2.在解决方案资源管理器里删除class1.vb
3.添加新建项

lhiha0mhgw3.jpg

lhiha0mhgw3.jpg


4.模板里选择"com类",然后输入名字,假定为TestDLL


                               
登录/注册后可看大图


5.添加代码
    Public Sub SayHello(ByVal str As String)
        MsgBox("Hello VB.NET For Lisp" & str)
    End Sub


                               
登录/注册后可看大图



6.生成DLL,为了调用方便,到创建项目那个目录下找到生成的DLL文件,拷到D盘下

zy1nrzqcgej.jpg

zy1nrzqcgej.jpg



7.生成TLB文件,供lisp调到

n4efifhi4lc.jpg

n4efifhi4lc.jpg


打开Visual Studio 2005 命令提示,输入regasm d:\testforlisp.dll /tlb ,确定后会在同样的位置生成一个tlb文件(第六步已经将生成
的testforlisp.DLL复制到D盘了)
8.打开CAD,进入lisp编辑器,编写这样的一段代码
(defun c:dll(/ obj  )
  (vl-load-com)
  (vlax-import-type-library :tlb-filename  "d:/testforlisp.tlb");导入TLB文件
  (setq obj (vlax-create-object "testforlisp.testdll"));创建对象,Testforlisp是命名空间,不是文件名,TestDll是创建的类名,
具体在VB编辑器下查看
  (vlax-invoke obj 'SayHello "tttttt") ;sayhello是testdll类下的一个方法,"ttttt"就是对应str的那个参数
  (vlax-release-object obj);做完释放对象
  )
9.加载代码,在命令行里输入DLL

1fakk5ewhed.jpg

1fakk5ewhed.jpg






通过这种方法可以将大量的代码编写工作转到VB里去,而且可以写出功能多样的程序。

问题:通过这种方法生成的TLB,复制到其它电脑里,不能调用了。请高手支招,帮忙解决这个问题,谢谢!

Lisp调用VB.net生成的TLB

kfkdl51c30d.jpg

kfkdl51c30d.jpg

Lisp调用VB.net生成的TLB

zadf3oxxgiy.jpg

zadf3oxxgiy.jpg

回复

使用道具 举报

1

主题

113

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
117
发表于 2010-7-31 14:42:00 | 显示全部楼层
没有必要生成TLB的,只调用dll就行。
(vlax-import-type-library :tlb-filename  "d:/testforlisp.tlb");导入TLB文件
这句没有必要,完全可以去掉。

至于在其它电脑里不能调用的问题解决方法是把testforlisp.DLL复制到其它电脑并注册此dll
注册dll方法:在“运行”中使用 regsvr32 X:\testforlisp.DLL
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2010-7-31 17:01:00 | 显示全部楼层
直接生成的DLL没有办法导入,如下
Command: (vlax-import-type-library :tlb-filename  "d:/testforlisp.dll")
; error: bad argument type: VLA-OBJECT nil

且将此DLL拷到别人电脑上,用regser32也无法注册
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2010-8-4 23:37:00 | 显示全部楼层
无人解答?
回复

使用道具 举报

75

主题

306

帖子

10

银币

中流砥柱

Rank: 25

铜币
606
发表于 2013-8-14 15:12:00 | 显示全部楼层
迟到的回复: regasm d:\testforlisp.dll /tlb /codebase d:\testforlisp.dl 这样即可!
回复

使用道具 举报

0

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
1
发表于 2015-4-11 21:32:00 | 显示全部楼层
厉害
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-28 19:01 , Processed in 3.076002 second(s), 68 queries .

© 2020-2025 乐筑天下

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