virgin 发表于 2007-10-7 01:57:00

[求助]LISP调用DLL文件时候的参数传递问题

<p><strong>由于某些处理过程AUTO LISP 和VLISP都不方便处理,所以我打算用VB写成DLL,再调用.但是遇到参数传递的问题.</strong></p><p>如:在VB6中创建一个ActiveX DLL工程,在其中将类模块修改为CLASS,将工程名修改为testdll。在其中添加下面的代码:<br/>Public Function FFA(a as Integer ,b as Integer )as Integer </p><p>&nbsp; FFA = a + b</p><p>&nbsp; MsgBox (a)<br/>&nbsp; MsgBox (FFA)<br/>End Function</p><p>将其编译成DLL文件后注册.</p><p>同时在VLISP中写了以下的代码</p><p>defun C:TEST(&nbsp;/ testobj result)<br/>&nbsp;&nbsp; (VL-LOAD-COM)</p><p>&nbsp; (setq AcadObject(vlax-get-acad-object)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AcadDocument(vla-get-ActiveDocument AcadObject)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mSpace(vla-get-ModelSpace AcadDocument)</p><p>&nbsp; )</p><p>&nbsp; <br/>&nbsp; (setq testobj (vlax-get-or-create-object "dlltest.CLASS"))<br/>&nbsp; (setq result (vlax-invoke-method testobj "FFA"&nbsp;&nbsp;1&nbsp;1 ))<br/>&nbsp; (princ result )</p><p>&nbsp; (vlax-release-object testobj)</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (princ)<br/>)</p><p>按照预定的目的,出现的消息框应该是"1",和"2" ,同时CAD里命令行输出应该是"2"(1+1=2啊)</p><p>但是,很不幸的是,输出都为"0".也没有报错.</p><p>也就是说传递给DLL的的参数并没有被接受.我试验过将他们的参数类型绝对的匹配,或者都为VARIANT;但是仍然不行. 我也想过用户系统变量如useri1来传递,可是在写DLL的时候虽然引用了AUTOCAD的几个东西,但是还是不行,出现" 错误: Automation 错误。 需要对象".</p><p></p><p>请各位前辈指点.谢谢!!!</p>

virgin 发表于 2007-10-7 02:21:00

呵呵,刚发求助5分钟,就在论坛里找到答案了.非常感谢各位前辈的指导.

cumtjh 发表于 2011-7-4 19:32:10

virgin 发表于 2007-10-7 02:21 static/image/common/back.gif
呵呵,刚发求助5分钟,就在论坛里找到答案了.非常感谢各位前辈的指导.

能说说你上面的问题出在哪里吗?
页: [1]
查看完整版本: [求助]LISP调用DLL文件时候的参数传递问题