Laden...

C#-dll unter unmanged C++ verwenden: möglich?

Erstellt von tonka vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.951 Views
tonka Themenstarter:in
373 Beiträge seit 2006
vor 14 Jahren
C#-dll unter unmanged C++ verwenden: möglich?

Hy@all,

ich versuche seit geraumer Zeit herauszufinden, ob es eine Möglichkeit gibt, C#-DLLs unter unmanged C++ zu verwenden. Das Problem ist das wir in ein bestehendes Programm mittels unmanaged C++ unser Programm integrieren möchten. Das Programm ist mittlerweile sehr groß und ist in C# geschrieben. Mit Google findet man immer nur "Wie benutzt man eine unmanaged DLL in C#", jedoch umgekehrt finde ich garnichts.

Weiß hier jemand Rat?

MfG
Tonka

G
131 Beiträge seit 2005
vor 14 Jahren

Hi,

also ich löse das immer in dem ich den C# Code als COM nach außen gebe. Soweit ich weiß, gibt es keine andere Möglichkeit.

1.361 Beiträge seit 2007
vor 14 Jahren

Hallo tonka,

das was du suchst, nennt sich "inverse P/Invoke" bzw "unmanaged exports". (Kannst ja danach mal googlen)

Die Alternative wäre wie von Generalissimo beschrieben COM.

Um unmanaged Exports zu erzeugen (eine C-Dll-Export-Schnittstelle) kannst du entweder eine Wrapper-DLL in C++/CLI programmieren, oder direkt deinen erzeugten IL-Code nachbearbeiten.
(Der normale C#-Compiler unterstützt das nämlich nicht, der C++/CLI-Compiler und der ILAsm-Compiler hingegen schon)

Und natürlich gibts auch schon nen passenden CodeProject-Artikel der das beschreibt und sogar ein komfortables Tool bereitstellt.

beste Grüße
zommi

PS: Falls COM eine Option ist, ist das evtl. einfacher.

PPS: Falls du mehr wissen willst, empfehle ich Expert .NET 2.0 IL Assembler von Serge Lidin.

tonka Themenstarter:in
373 Beiträge seit 2006
vor 14 Jahren

Hallo,

danke erstmal für die Antworten. Das das mit COM möglich ist ist mir klar, aber dadurch das ich manche Formel sehr oft aufrufen muss, ist COM hier sehr langsam. Werde mal ein bisschen mit der im CodeProjekt-Artikel beschriebenen "Technik" probieren. Ergebnisse werde ich dann posten!

MfG
Tonka