Visual Lisp: как вызывать функции во внешней C ++ DLL - PullRequest
8 голосов
/ 12 декабря 2011

У меня есть написанная на C ++ dll (нативная, а не .net), и я хотел бы использовать ее функциональность из Visual Lisp. Может кто-нибудь указать мне пример того, как это сделать, или, по крайней мере, какую часть документации читать?

Ответы [ 2 ]

6 голосов
/ 19 декабря 2011

Я решил эту проблему, написав обертку activex / COM для моей dll, которая, на мой взгляд, должна упростить ссылки в будущем. Начав тему в Болото , я получил несколько хороших ответов о том, как вызывать COM из Visual Lisp. Для справки, это выглядит примерно так:

//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
4 голосов
/ 13 декабря 2011

Вы предоставляете свой собственный код C ++ для AutoLisp с помощью вызовов API acedDefun () и acedRegFunc ().

Здесь - это обсуждение на форуме разработчиков Autodesk, в котором задается именно ваш вопрос.

...