Visual Lisp: how to call functions in external C++

2019-02-09 13:01发布

I have a C++ dll I have written (native, not .net), and I would like to use its functionality from Visual Lisp. Can anyone point me to an example of how to do this, or at least which bit of documentation to read?

2条回答
forever°为你锁心
2楼-- · 2019-02-09 13:36

You expose your native C++ code to AutoLisp using the acedDefun() and acedRegFunc() API calls.

Here is a discussion on Autodesk's programming forum asking exactly your question.

查看更多
来,给爷笑一个
3楼-- · 2019-02-09 13:44

I solved this by writing an activex/COM wrapper for my dll, which I think should make it easier to link to in future. Starting a thread on the swamp yielded some answers from nice people about how to call COM from Visual Lisp. For the record, it looks something like this:

//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
查看更多
登录 后发表回答