明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 966|回复: 6

[讨论] vl-ACAD-defun是什么鬼?

[复制链接]
发表于 2020-8-11 16:49 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2020-8-12 09:51 编辑

(defun c:tt1() (princ "this is a test" ))
编译后再反编译,成了
(vl-ACAD-defun (DEFUN C:TT1() (PRINC "this is a test" )  ) )
'C:TT1
这(vl-ACAD-defun 是什么鬼?
看了一下编译后的代码,原来一个(defun c:tt1被分成了两步,第一步是定义一个c:tt1函数,它是不能当命令运行的。第二步是调用(vl-ACAD-defun ,把c:tt1定义成AutoCAD命令。
改一下,去掉第二步试试。
试验结果如下:
命令: (LOAD "F:/00/sth2_new.fas") C:TT1
命令: tt1
未知命令“TT1”。按 F1 查看帮助。
命令: (c:tt1)
this is a test"this is a test"

结论,去掉vl-ACAD-defun 调用后,确实可以定义一个名为c:tt1的函数,它可以用(c:tt1)调用,但不是cad命令。

正常的lsp源码不可能出现vl-ACAD-defun,因为没人愿意去自找麻烦。
只要有这个vl-ACAD-defun 一定是反编译出来的,可以认为是盗版别人的,这是个明显标记。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-8-11 17:10 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2020-8-11 17:36 编辑

定义后TT1可以当透明命令使用,也可以像cad自身的命令一样用(command "TT1"...http://bbs.xdcad.net/thread-667731-1-2.html
 楼主| 发表于 2020-8-12 09:36 | 显示全部楼层
自贡黄明儒 发表于 2020-8-11 17:10
定义后TT1可以当透明命令使用,也可以像cad自身的命令一样用(command "TT1"...http://bbs.xdcad.net/thread ...

谢谢,也就是说(defun c:xx   在编译时被分成了两步,第一步是定义一个 (c:xx)函数,它不是能当命令来执行的,第二步用(vl-acad-defun定义成cad命令
发表于 2020-8-12 09:41 | 显示全部楼层
自贡黄明儒 发表于 2020-8-11 17:10
定义后TT1可以当透明命令使用,也可以像cad自身的命令一样用(command "TT1"...http://bbs.xdcad.net/thread ...

黄老师审题不仔细,是vl-ACAD-defun,而不是Vlax-Add-Cmd
 楼主| 发表于 2020-8-12 09:50 | 显示全部楼层
tryhi 发表于 2020-8-12 09:41
黄老师审题不仔细,是vl-ACAD-defun,而不是Vlax-Add-Cmd

反编译的源码中可以删除这东西,没有任何不良影响。删了再编译还会自动加上。
发表于 2020-8-12 09:53 | 显示全部楼层
将 Visual LISP 函数符号定义为外部子例程

(vl-acad-defun ’symbol)
参数

symbol

标识函数的符号。

如果函数没有 c: 前缀,而又需要从外部 ObjectARX 应用程序调用此函数,则可以使用 vl-acad-defun 来实现。


只能解释为所有的c:函数都应该加上这个,可以不加是因为解释器会自动识别,编译时编译器会自动加上
 楼主| 发表于 2021-1-25 08:53 | 显示全部楼层
只要程序源码中有这个vl-ACAD-defun 一定是反编译出来的,可以认为是盗版标记。这样的程序都应该是免费的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 20:58 , Processed in 4.620852 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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