Ik vroeg mij af of het mogelijk is om een standaard Win32 DLL te laden vanuit C#/.NET en daaruit functies aan te roepen. Dit kan natuurlijk met het DllImport-attribuut:
Alleen dan moet je compiletime weten welke DLL je wilt gaan gebruiken
Stel ik wil runtime een DLL kiezen, laden en daaruit een functie aanroepen? Ik heb het nog zo geprobeerd:
En dan via de DllImport-methode LoadLibrary en GetProcAddress aanroepen uit kernel32.dll, maar als ik dan uiteindelijk returnvalue van die laatste in een "dllfunc" stop en die aanroep krijg ik de melding:
Weet iemand nog een alternatief? Of zie ik iets heel erg over het hoofd?
code:
1
| [DllImport("kernel32.dll", EntryPoint="LoadLibrary")] public static extern int LoadLibrary(String strFileName); |
Alleen dan moet je compiletime weten welke DLL je wilt gaan gebruiken
code:
1
| public delegate int dllfunc(int a, int b, int c, int d, int e); |
En dan via de DllImport-methode LoadLibrary en GetProcAddress aanroepen uit kernel32.dll, maar als ik dan uiteindelijk returnvalue van die laatste in een "dllfunc" stop en die aanroep krijg ik de melding:
code:
1
2
3
| An unhandled exception of type 'System.ArgumentException' occurred in w32loader.exe Additional information: Function pointer was not created by a Delegate. |
Weet iemand nog een alternatief? Of zie ik iets heel erg over het hoofd?