Ho una DLL C++ che ho scritto (nativo, non .net), e mi piacerebbe usare la sua funzionalità da Visual Lisp. Qualcuno può indicarmi un esempio su come farlo, o almeno quale bit di documentazione leggere?Visual Lisp: come chiamare le funzioni in DLL C++ esterna
8
A
risposta
6
Ho risolto questo problema scrivendo un wrapper activex/COM per la mia DLL, che a mio avviso dovrebbe facilitare il collegamento in futuro. Avvio di una discussione su the swamp ha prodotto alcune risposte da persone piacevoli su come chiamare COM da Visual Lisp. Per la cronaca, sembra qualcosa del genere:
//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
Si espone il codice C++ nativo a AutoLisp utilizzando le chiamate API acedDefun() e acedRegFunc().
Here è una discussione sul forum di programmazione di Autodesk che richiede esattamente la tua domanda.
Problemi correlati
- 1. Come chiamare DLL C++ in C#
- 2. Come utilizzare la "C" esterna per chiamare le funzioni C++ in C
- 3. Chiamare C# dll in vbscript
- 4. Python può chiamare le funzioni Delphi in una DLL?
- 5. Come chiamare le funzioni Java da C++?
- 6. È possibile chiamare una DLL C# da una DLL C?
- 7. Chiamare le funzioni exe C++ da C#
- 8. Chiamare C++ (non C) da Common Lisp?
- 9. Come visualizzare le funzioni DLL?
- 10. Chiamare DLL C++ da Python
- 11. Chiamare le funzioni DLL C/C++ non gestite da SQL Server 2008
- 12. Come chiamare le funzioni di una DLL COM (in VC++) da un'applicazione VC++ .EXE?
- 13. Chiamare vb6 dll da C#
- 14. Come chiamare le funzioni R da Fortran?
- 15. nodejs: Come chiamare la funzione DLL C++ tramite nodejs?
- 16. Puoi mostrarmi come riscrivere le funzioni in lisp?
- 17. Come chiamare le funzioni/metodi C++ tramite JavaScript
- 18. Chiamare le funzioni template C++ esterne in Cython
- 19. Come posso chiamare le funzioni dell'API di Windows utilizzando emacs lisp?
- 20. Come meglio chiamare le funzioni con firme di funzioni array in stile C99 da C++
- 21. Soluzione C# Visual Studio in una DLL
- 22. Come utilizzare le impostazioni in Visual C#
- 23. Esportazione di funzioni da C++ dll a C# P/Invoke
- 24. Dove inserire le dipendenze DLL nel progetto Visual Studio C++?
- 25. Esportare le funzioni da dll solo ordinale
- 26. Chiamare le funzioni R da VC++
- 27. Come si chiamano le funzioni DLL di Windows da Ruby?
- 28. Chiamata di funzioni da un C++ DLL in Delphi
- 29. Funzioni SQLITE definite dall'utente in Lisp
- 30. Come eseguire il debug di una libreria esterna (OpenCV) in Visual C++?
Mi sembra una domanda leggermente diversa - il poster ha creato un'app ObjectARX che è una cosa che sto cercando di evitare. Mi piacerebbe chiamare una DLL esistente da Lisp, idealmente senza modificare la DLL. È possibile? –
So che AutoLisp ha alcuni aggancio COM, ma non posso commentare questo approccio perché non l'ho usato personalmente. Ho sempre pensato che costruire un connettore ObjectARX (o equivalente .NET) sottile .dll fosse l'approccio più semplice. (Ma poi di nuovo sono stato un programmatore C++ per decenni :) –