8

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

4

2 回答 2

6

我通过为我的 dll 编写一个 activex/COM 包装器解决了这个问题,我认为它应该使将来更容易链接到。在沼泽上启动一个线程从好人那里得到了一些关于如何从 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
于 2011-12-19T18:10:09.843 回答
4

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

是 Autodesk 编程论坛上的一个讨论,正是询问您的问题。

于 2011-12-12T22:16:29.367 回答