C'è un modo per fare in modo che la particolare DLL a cui fa riferimento una firma P/Invoke (DllImport) dipenda dall'architettura della CPU?CPU Architecture Independent P/Invoke: DllName o percorso possono essere "dinamici"?
Sto lavorando su un'applicazione che carica un gran numero di firme di metodo da una dll nativa da un fornitore di terze parti, in questo caso la DLL dell'interfaccia utente-spazio su un pezzo di hardware. Il fornitore ha ora iniziato a fornire versioni x86 e x64 della DLL ora, e penso che la mia app trarrebbe beneficio dall'esecuzione come un processo a 64 bit. Ad eccezione di questa DLL, tutto è codice .NET, quindi la creazione come "Qualsiasi CPU" funzionerebbe.
Tutte le firme del metodo nella DLL nativa sono le stesse su 64 bit, tuttavia il nome della DLL è diverso (Foo.dll vs. Foo_x64.dll). C'è un modo attraverso le firme P/Invoke o le voci app.config posso ottenere per scegliere quale DLL caricare in base all'architettura della CPU in esecuzione?
Se invece di nomi di DLL diversi era lo stesso nome in diverse cartelle, apre altre opzioni?
NB: poiché è essenziale che la versione di questa DLL dello spazio utente corrisponda al driver del kernel installato per l'hardware, la DLL non è in bundle con la nostra app, ma dipendiamo dal programma di installazione del venditore per collocarla in un directory nel% PATH%.
Possibile duplicato di http: // StackOverflow.it/questions/23215518/target-32-bit-o-64-bit-nativo-dll-a seconda dell'ambiente –
Penso che la duplicazione sia il contrario, dato che questa domanda è di quattro anni più vecchia di quella :) – Cheetah