[求助]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> FFA = a + b</p><p> MsgBox (a)<br/> MsgBox (FFA)<br/>End Function</p><p>将其编译成DLL文件后注册.</p><p>同时在VLISP中写了以下的代码</p><p>defun C:TEST( / testobj result)<br/> (VL-LOAD-COM)</p><p> (setq AcadObject(vlax-get-acad-object)</p><p> AcadDocument(vla-get-ActiveDocument AcadObject)</p><p> mSpace(vla-get-ModelSpace AcadDocument)</p><p> )</p><p> <br/> (setq testobj (vlax-get-or-create-object "dlltest.CLASS"))<br/> (setq result (vlax-invoke-method testobj "FFA" 1 1 ))<br/> (princ result )</p><p> (vlax-release-object testobj)</p><p> (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> 呵呵,刚发求助5分钟,就在论坛里找到答案了.非常感谢各位前辈的指导. virgin 发表于 2007-10-7 02:21 static/image/common/back.gif呵呵,刚发求助5分钟,就在论坛里找到答案了.非常感谢各位前辈的指导.
能说说你上面的问题出在哪里吗?
页:
[1]