Search code examples
c++dllautocadautolisp

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


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?


Solution

  • 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