Yazdığım bir C++ dll (yerel değil, .net) var ve onun işlevselliğini Visual Lisp'de kullanmak istiyorum. Birisi bana bunun nasıl yapılacağına veya en azından hangi belgelerin okunacağına dair bir örnek gösterebilir mi?Visual Lisp: dış C++ DLL'de işlevler nasıl çağırılır
8
A
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.
İlgili konular
- 1. .eex dosyasından işlevler nasıl çağırılır
- 2. Bir vararg parametresinden işlevler nasıl çağırılır?
- 3. C++ API nasıl çağırılır C#
- 4. Visual C# backtrace: [dış kod] nerede bulunur?
- 5. Java'dan C# işlevi nasıl çağırılır
- 6. jqGrid: Dış filtrelerden ızgarayı yenilemek için 'reloadGrid' nasıl çağırılır
- 7. Visual Studio'da dış kodun nasıl tanımlanır (F12)?
- 8. Dönüştürme Lisp C++
- 9. C Dışa aktarılamayan işlevler
- 10. C# yöntemini yalnızca varsa nasıl çağırılır?
- 11. Çapraz etki alanı API'sı nasıl çağırılır C#
- 12. Montajda C ile yazılmış kodu nasıl çağırılır?
- 13. + (LISP)
- 14. C# Genel işlevler
- 15. LISP'de C# içinde olabileceği gibi aşırı yüklenebilir işlevler olabilir mi?
- 16. Form Nasıl Çağırılır?
- 17. Visual C++
- 18. Lispit'te SQLITE kullanıcı tanımlı işlevler
- 19. Belirli bir metodu her birkaç saniyede C# nasıl çağırılır?
- 20. C++ 'da geçersiz kılındıktan sonra orijinal işlevi nasıl çağırılır?
- 21. Saydam Operatörü İşlevsel İşlevler
- 22. Visual C#
- 23. LISP arabası?
- 24. opencv/visual studio: hata LNK2019: çözülmemiş dış simge
- 25. AngularJS denetleyicisinde mailto nasıl çağırılır
- 26. adaptör sınıfından getsupportfragmentmanager() nasıl çağırılır?
- 27. Windows Service'ten WebAPI nasıl çağırılır
- 28. Java kodundan nasıl servlet çağırılır
- 29. Java WebServisler - nasıl servis çağırılır?
- 30. Python - Subprocess - Windows'ta Piped komutu nasıl çağırılır?
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ü? –
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 :) –