Okej.. Jag har en fråga som kanske är självklar för er som programmerar managed C++. Förstår inte riktigt i vilken ordning saker sker Han vill alltså exportera en funktion som ett vanligt C-program kan anropa. Funktionen han vill exportera kommer (in)direkt anropa .NET-kod. Det låter som det jag menar.. > Oki, det är väl bara att köra då. Jag ville egentligen bara ha en liten vink om det är möjligt eller om jag skulle trixa med managed C++ helt i onödan.Managed/Unmanaged blandat kors och tvärs
Jag behöver exportera en funktion i en dll enligt ett visst format, men vill att det som utför koden skall ligga i C#...
Alltså:
[DLL med exporterad funktion ("unmanaged C++")] -> [managed C++] -> [anrop till funktion i managerad .NET dll]
och sen tillbaka med resultat då...
Är detta möjligt? Eller finns det bättre sätt att exportera en C# (.NET)-funktion för en Win32-app?Sv: Managed/Unmanaged blandat kors och tvärs
speciellt "anrop" i den sista delen förvillar.
Om du bara vill anropa en funktion i en "native" dll från C# är det väl bara att använda pinvoke (inte helt lätt att få till alla using etc men det borde finnas gott om exempel på internet).Sv: Managed/Unmanaged blandat kors och tvärs
Jag är inte helt säker på hur du ska göra; om du vill ha just C-style på det hela så borde det inte vara värre än att ha
#pragma unmanaged
ovanför deklarationen av din funktion, och sedan exporterar du den på vanligt sätt. Den funktionen borde kunna anropa din .NET-kod á la C++/CLI (.net) som sedan anropar din c#-kod.
Annars borde du kunna gå över COM, finns lite attribut som gör att det går att registrera .net-dll:er i COM. COM borde inte vara några större problem att anropa.
Sv:Managed/Unmanaged blandat kors och tvärs
Dock kan jag inte använda COM som du föreslog eftersom det är operativsystemet som förväntar sig att DLL:en har en viss exporterad funktion med ett visst namn och ett visst antal parametrar (Det är egentligen flera användningsområden jag funderat på med detta. Ex. Hook-API:t till DHCP m.m.)
Oki, det är väl bara att köra då. Jag ville egentligen bara ha en liten vink om det är möjligt eller om jag skulle trixa med managed C++ helt i onödan.Sv: Managed/Unmanaged blandat kors och tvärs
Obs, jag säger tror. Jag är itne helt hundra på om du behöver ännu mer kod än att bara anropa .net-koden eller inte... Men det märker du snart ;)