2011-12-12 13 views

cevap

6

Bunu, dll için bir activex/COM sarmalayıcı yazarak çözdüm. Bu, gelecekte daha kolay bağlantı kurmayı kolaylaştıracağını düşünüyorum. the swamp'da bir iş parçacığı başlatmak, güzel insanlardan Visual Lisp'den COM'u arama hakkında bazı yanıtlar verdi. Kayıt için, şu gibi bir şey görünüyor:

//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

Yerel C++ kodunuzu acedDefun() ve acedRegFunc() API çağrılarını kullanarak AutoLisp'e iletirsiniz.

Here, Autodesk'in programlama forumunda tam olarak sorunuzu soran bir tartışmadır.

+1

Bu bana biraz farklı bir soru gibi görünüyor - poster açık bir şekilde yönlendirmeye çalıştığım bir nesne olan bir ObjectARX uygulaması yaptı. Ben ideal bir DLL değiştirmeden lisp gelen mevcut bir DLL aramak istiyorum. Mümkün mü? –

+1

AutoLisp'in bazı COM kancalarına sahip olduğunu biliyorum, ancak kişisel olarak kullanmadığım için bu yaklaşımı gerçekten yorumlayamıyorum. Ben her zaman ince bir ObjectARX (veya .NET eşdeğeri) bağlayıcı oluşturmanın .dll daha kolay bir yaklaşım olduğunu düşündüm. (Ama sonra tekrar on yıllardır bir C++ programcısı oldum :) –

İlgili konular