Gibt es eine Möglichkeit, die bestimmte DLL, auf die eine P/Invoke (DllImport) -Signatur verweist, von der CPU-Architektur abhängig zu machen?CPU-Architektur unabhängig P/Invoke: Kann der DllName oder der Pfad "dynamisch" sein?
Ich arbeite an einer Anwendung, die eine große Anzahl von Methodensignaturen von einer nativen DLL von einem Drittanbieter lädt, in diesem Fall die User-Space-Schnittstelle DLL zu einem Stück Hardware. Dieser Anbieter hat nun angefangen, sowohl x86- als auch x64-Versionen der DLL zu liefern, und ich denke, dass meine App davon profitieren würde, als 64-Bit-Prozess ausgeführt zu werden. Abgesehen von dieser einen DLL ist alles .NET-Code, also würde das Bauen als "Any CPU" funktionieren.
Alle Methodensignaturen in der systemeigenen DLL sind auf 64 Bit identisch, der Name der DLL ist jedoch unterschiedlich (Foo.dll vs. Foo_x64.dll). Gibt es einen Weg durch die P/Invoke-Signaturen oder app.config-Einträge Ich kann es erhalten, welche DLL basierend auf der laufenden CPU-Architektur zu laden?
Wenn es anstelle von verschiedenen DLL-Namen in verschiedenen Ordnern denselben Namen hatte, öffnet das andere Optionen?
Hinweis: Da die Version dieser User-Space-DLL unbedingt mit dem installierten Kerneltreiber für die Hardware übereinstimmen muss, ist die DLL nicht mit unserer App gebündelt, sondern hängt vom Installationsprogramm des Herstellers ab Verzeichnis in% PATH%.
Mögliche Duplikat von http: // stackoverflow.com/questions/23215518/Ziel-32-Bit-oder-64-Bit-native-dll-abhängig von der Umgebung –
Ich denke, die Vervielfältigung ist anders herum, da diese Frage vier Jahre älter ist als die :) – Cheetah