Ich verwende DllImport
in meiner Lösung.
Mein Problem ist, dass ich zwei Versionen der gleichen DLL eine für 32 Bit und eine andere für 64 Bit gebaut haben.
Beide stellen die gleichen Funktionen mit identischen Namen und identischen Signaturen zur Verfügung. Mein Problem ist, dass ich zwei statische Methoden verwenden muss, die diese exponieren und dann zur Laufzeit verwenden IntPtr
Größe, um den richtigen Aufruf zu ermitteln.
private static class Ccf_32
{
[DllImport(myDllName32)]
public static extern int func1();
}
private static class Ccf_64
{
[DllImport(myDllName64)]
public static extern int func1();
}
Ich muss dies tun, weil myDllName32
y myDllName64
muss konstant sein, und ich habe keine Möglichkeit gefunden, sie zur Laufzeit zu setzen.
Hat jemand eine elegante Lösung für diese so könnte ich loswerden der Code-Duplikation und die konstante IntPtr
Größenkontrolle.
Wenn ich den Dateinamen festlegen könnte, bräuchte ich nur einmal zu prüfen, und ich könnte eine Menge wiederholten Code loswerden.
0 Stimmen
Es macht keinen Sinn, sie zur Laufzeit auszuwählen, wenn der Unterschied in der gesamten Kompilierung besteht.