voglio usare dll fatto in C# (visual studio 2008) nel progetto C++ (visual studio 2003). come farlo ? prego heidelpusando C# dll nel progetto C++
risposta
è più di una semplice interoperabilità COM, il MSDN FAQ elenca anche metodi meno conosciuti:
2.2 Come chiamare in .NET assembly da nativo Visual C++?
Esistono fondamentalmente quattro metodi per chiamare l'assembly .NET dal codice nativo VC++ . Microsoft All-In-One Code Framework ha esempi funzionanti che dimostrano i metodi . Modulo
Native VC++ chiama CLR Hosting APIs per ospitare CLR, caricare e chiamata l'assembly .NET. (All-In-One codice del framework di codice di esempio: CppHostCLR)
Se l'assembly .NET può essere esposta come un componente COM, modulo nativo VC++ può chiamare in assembly .NET attraverso NET - COM Interop. (codice Framework Code-in-One All campione : CppCOMClient)
Reverse PInvoke: il gestito nativo codice di chiamata passando un delegato il codice nativo può richiamare. (All-In-One Codice quadro di esempio Codice: CSPInvokeDll)
Se il modulo che contiene codice nativo VC++ è permesso di enable CLR, il VC nativo codice di ++ può chiamare assembly .NET direttamente attraverso i “E Just Works ", O" IJW ", meccanismo. (Codice Quadro Codice-in-one del campione: CppCLIWrapLib)
Non è possibile utilizzare direttamente gli assembly .NET dal codice C++ non gestito. Una possibile soluzione consiste nell'esporre l'assieme come oggetto COM utilizzando l'utilità regasm.exe e quindi utilizzarlo da C++. Si noti che i tipi .NET che devono essere esposti come oggetti COM potrebbero dover essere decorati con l'attributo [COMVisible(true)]
e richiederebbero comunque il framework .NET installato sul computer di destinazione che esegue il codice C++.
Ci sono molti modi per farlo.
La DLL C# è una DLL COM? In tal caso, è possibile utilizzare la regolare API/specifica COM per accedervi nel programma C++. Ci sono molti tutorial su come rendere visibile la COM DLL C#. Non è così difficile, poche opzioni di compilazione e attributi C# in pratica.
Altrimenti, è possibile compilare il progetto C++ utilizzando lo switch del compilatore /clr? In tal caso, è possibile utilizzare Using Directive per importare direttamente la DLL C#.
Crea file di libreria [.Tlb] e quindi solo noi possiamo usare le dll. Devi creare .TLB (Type Library file) della tua DLL C# originale e usare quella libreria .TLB nel codice VC++. Per questo è necessario registrare il file .TLB sul proprio PC ed è necessario importare il file .TLB nella propria applicazione vC++. Quando scrivete C# DLL ricordate di usare le interfacce che sarebbero state implementate nella classe.
Come ha detto Darin, un modo è tramite COM. Gli altri due modi (lo so) sono:
- È possibile creare una DLL in modalità mista in C++. Quella DLL può contenere e chiamare il codice gestito, ma può anche esportare funzioni non gestite, come una normale DLL C++. Può essere incluso come qualsiasi altra DLL C++
- È molto più difficile, ma puoi anche ospitare il CLR. Google per "hosting CLR" per trovare dettagli sull'API o sui campioni.
dopo aver impostato il "resolve #using References" (Progetto-> C/C++ -> Generale) opzione del compilatore nella directory che contiene l'assemblea vuoi, poi metti una riga come questa nel tuo codice.
#using <NiftyAssembly.dll>
- 1. Utilizzo di DLL C++ nel progetto C#
- 2. Come aggiungere dll nel progetto C#
- 3. Dove inserire le dipendenze DLL nel progetto Visual Studio C++?
- 4. Aggiunta di DLL C++ a un progetto C#
- 5. Come eseguire il debug della DLL C++ dal progetto C#?
- 6. Debug C++ dll in C#
- 7. Identificare dipendenze problematiche nel progetto C++/CLI
- 8. Come invertire una DLL nel codice C++?
- 9. C#: comctl32.dll versione 6 nel debugger
- 10. Utilizzo di dll C++ gestita da C#
- 11. NUnit C# Test Progetto che fa riferimento ad altre DLL
- 12. C# aggiorna la DLL senza ricompilare il progetto
- 13. Impossibile aggiungere riferimento a WinRT C++ progetto DLL
- 14. Debug del progetto VB6 che chiama una DLL .Net (C#)
- 15. C# a C++/CLI a C DLL System.IO.FileNotFoundException
- 16. È possibile chiamare una DLL C# da una DLL C?
- 17. Soluzioni C#: utilizzando un progetto "Globali" per le DLL esterne?
- 18. Come chiamare DLL C++ in C#
- 19. Utilizzo di una DLL di Visual C++ nel vecchio Borland C?
- 20. Come utilizzare DLL esterne nel progetto CMake
- 21. C# LPT inpout32.dll
- 22. C++ interfaccia DLL plug
- 23. Reverse engineer C++ DLL
- 24. C++ windows dll viewer
- 25. Injecting C++ DLL
- 26. Come includere boost :: thread nel progetto C++?
- 27. Come inserisco una dll nel mio progetto - visual studio C# 2010
- 28. Come aggiungere un percorso della DLL di runtime nel progetto VIsual C++ Express 2010?
- 29. Come impacchettare C++ con DLL e librerie
- 30. C#/C++ nella stessa soluzione - DllImport non trova DLL
possibile duplicato di [Come utilizzare C# Dll in VC++ ??] (http://stackoverflow.com/questions/980808/how-to-use-c-dll-in-vc) –
possibile duplicato di [E 'possibile utilizzare una DLL creata usando C# in un'applicazione VC++ non gestita?] (http://stackoverflow.com/questions/2873714/is-it-possibile-al-utile-a-dll-created-using- c-in-an-unmanaged-vc-application) –
@ 0xA3: Sono curioso, come sarebbe VC++ 2008 rendere le cose più facili? Il codice compilato in VC 2003 può includere componenti COM e può includere qualsiasi tipo di DLL wrapper nativo, anche se è scritto in VC2008, giusto? – Niki