Visual Lisp: как вызывать функции во внешней библиотеке DLL C++

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

2 ответов


Я решил это, написав 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

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

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