2011-12-12 3 views

답변

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은 오토 데스크의 프로그래밍 포럼에서 사용자의 질문을 정확하게 묻는 토론입니다.

+1

포스터가 나에게 약간 다른 질문 인 것처럼 보입니다. 포스터는 ObjectARX 앱을 만들었습니다.이 앱은 내가 조정하려고하는 것입니다. DLL을 수정하지 않고 lisp에서 기존 DLL을 호출하고 싶습니다. 그게 가능하니? –

+1

AutoLisp에는 몇 가지 COM 훅이 있지만, 개인적으로 사용하지 않았기 때문에이 방법에 대해서는 언급 할 수 없습니다. 나는 항상 얇은 ObjectARX (또는 .NET에 해당하는) 커넥터 .dll을 만드는 것이 더 쉬운 방법이라고 생각했습니다. (하지만 다시 나는 수십 년 동안 C++ 프로그래머가되었습니다 :) –