C#-DLL aus C++-DLL verwenden
-
Hallo,
ich habe folgendes Problem:
ich muß eine C#-Dll von einem bestehenden Programm aus ansprechen, das nur mit C-Schnittstellen spricht. Daher klemme ich zwischen dem Programm und der C#-DLL eine C++-DLL, die ich mit einer C-Schnittstelle versehe (extern "C").
Wie aber kann ich nun eine Methode aus der C#-DLL ansprechen und verwenden???
Schon mal vielen Dank im Voraus....
Lars
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
c# klassen in dlls können wohl irgendwie als COM-Komponenten benutzt werden und diese wiederum kann man von C++ aus benutzen.
(Frag mich aber nich wie ;D)
-
Du musst deine class für COM sichbar machen, das geht so:
[ComVisibleAttribute(true)] public class foo { public void func() { .... } }Optinal kannst du auch eine angeben ( Guid("xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx") ).
Jetzt machst du ein "regasm DeinAssembly.dll /tlb" um das assembly to registrieren und eine typelib zu erzeugen (regasm ist im .NET framework mit dabei).
Nun fehlt nur noch ein:#import "DeinAssembly.tlb"und du kannst auf deine C# assembly über COM aus C++ raus zugreifen.
-
Es gibt verschiedene Wege dies zu machen. Der einfachste ist "IJW" (It just work's).
Du musst Deine C++ Projekt nur mit "/clr" übersetzen, dann kannst Du die C# DLLs direkt ansprechen.
Ansonsten kannst Du auch noch die CLR von "Hand" hosten:
http://www.gotdotnet.com/team/clr/about_clr_Hosting.aspxOder eben COM-Interop verwenden...