Czy istnieje sposób, aby konkretna biblioteka DLL, do której odwołuje się podpis P/Invoke (DllImport), zależy od architektury procesora?Architektura CPU Niezależne P/Wywołanie: czy nazwa lub nazwa Dll może być "dynamiczna"?
Pracuję nad aplikacją, która ładuje dużą liczbę podpisów metod z rodzimej biblioteki dll od zewnętrznego dostawcy, w tym przypadku DLL interfejsu użytkownika do części sprzętu. Ten dostawca zaczął teraz dostarczać wersje bibliotek DLL w wersji x86 i x64 teraz i myślę, że moja aplikacja mogłaby odnieść korzyści z uruchamiania jako proces 64-bitowy. Z wyjątkiem tej jednej DLL, wszystko jest .NET kod, więc budowanie jako "Any CPU" będzie działać.
Wszystkie sygnatury metod w macierzystej bibliotece DLL są takie same na 64-bitach, jednak nazwa biblioteki DLL jest inna (Foo.dll vs. Foo_x64.dll). Czy istnieje jakiś sposób przez podpisy P/Invoke lub wpisy app.config mogę go pobrać, aby wybrać bibliotekę DLL do załadowania w oparciu o działającą architekturę procesora?
Jeśli zamiast różnych nazw plików DLL było to to samo nazwisko w różnych folderach, czy to spowoduje otwarcie innych opcji?
NB: Ponieważ jest istotne, że wersja tej przestrzeni użytkownika DLL jest zgodna z zainstalowanym sterownikiem jądra dla sprzętu, biblioteka DLL nie jest dołączona do naszej aplikacji, ale zamiast tego zależymy od instalatora dostawcy, aby umieścić go w katalog w% PATH%.
Możliwe duplikaty http: // stackoverflow.com/questions/23215518/target-32-bit-or-64-bit-native-dll-depend-on-environment –
Myślę, że duplikacja jest odwrotna, ponieważ to pytanie jest cztery lata starsze niż to :) – Cheetah