Visual Lisp:如何在外部C ++ DLL中调用函数

时间:2011-12-12 16:49:03

标签: c++ dll autocad autolisp

我有一个我编写的C ++ DLL(本机,而不是.net),我想使用Visual Lisp的功能。任何人都能指出一个如何做到这一点的例子,或者至少要阅读哪些文档?

2 个答案:

答案 0 :(得分:6)

我通过为我的dll编写一个activex / COM包装器来解决这个问题,我认为这将使以后更容易链接。在the swamp上启动一个线程,从好人那里得到了一些关于如何从Visual Lisp调用COM的答案。为了记录,它看起来像这样:

//in c++... (header and IDL file also needed)
hresult timestwo(double in,double* out)
{
  *out = in*2;
  return S_OK;
}

;; in Lisp...
(vl-load-com)
(setq myinstance (vlax-create-object "mycomwrapperdll.mycomwrapperclass"))
(setq num 12.34)
(vlax-invoke-method myinstance 'timestwo num 'newnum)
(vlax-release-object myinstance)
;; newnum now contains 24.68

答案 1 :(得分:4)

使用acedDefun()和acedRegFunc()API调用将您的本机C ++代码公开给AutoLisp。

Here是关于Autodesk编程论坛的讨论,询问您的问题。