问题表现: 源码运行正常,编译成vlx 或是fas运行提示函数没有定义。
问题实质: 首先排除语法问题,定义在别的vlx中的函数未导出或是未引用问题。然后回到vlx本身,内部相互调用也会出现问题请参照本文档。这主要是因为内部链接的时候消除了函数,因为这个函数的引用计数为0。但实际情况是很多地方都调用了这个函数,为什么还会引用计数为0?因为autolisp是解释执行的动态语言,还有lambda和eval这样的动态调用特性,因此好多函数在编译阶段找不到了。
解决方案: 在任何使用这些函数的地方添加(function 函数 调用),function 函数调用会通知编译器去找到这个函数的定义然后内部链接它。