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, задавая именно ваш вопрос.