필자는 (네이티브가 아니라 .net) C++ DLL을 가지고 있으며 Visual Lisp의 기능을 사용하고 싶습니다. 누구든지이 작업을 수행하는 방법에 대한 예제 나 적어도 읽어야 할 문서의 일부를 알려줄 수 있습니까?Visual Lisp : 외부 C++ DLL에서 함수를 호출하는 방법
8
A
답변
6
필자는 내 dll 용 activex/COM 래퍼를 작성하여이 문제를 해결했습니다.이 링크는 미래에 링크하기가 쉬워야한다고 생각합니다. the swamp에서 스레드를 시작하면 Visual Lisp에서 COM을 호출하는 방법에 대해 좋은 사람들로부터 답변을 얻을 수 있습니다. 기록의 경우 다음과 같이 보입니다.
//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
acedDefun() 및 acedRegFunc() API 호출을 사용하여 네이티브 C++ 코드를 AutoLisp에 노출합니다.
Here은 오토 데스크의 프로그래밍 포럼에서 사용자의 질문을 정확하게 묻는 토론입니다.
포스터가 나에게 약간 다른 질문 인 것처럼 보입니다. 포스터는 ObjectARX 앱을 만들었습니다.이 앱은 내가 조정하려고하는 것입니다. DLL을 수정하지 않고 lisp에서 기존 DLL을 호출하고 싶습니다. 그게 가능하니? –
AutoLisp에는 몇 가지 COM 훅이 있지만, 개인적으로 사용하지 않았기 때문에이 방법에 대해서는 언급 할 수 없습니다. 나는 항상 얇은 ObjectARX (또는 .NET에 해당하는) 커넥터 .dll을 만드는 것이 더 쉬운 방법이라고 생각했습니다. (하지만 다시 나는 수십 년 동안 C++ 프로그래머가되었습니다 :) –