Niezależna od architektury architektura P / Invoke: czy nazwa DllName lub ścieżka mogą być „dynamiczne”?

Czy istnieje sposób, aby konkretna biblioteka DLL, do której odwołuje się podpis P / Invoke (DllImport), zależała od architektury procesora?

Pracuję nad aplikacją, która ładuje dużą liczbę podpisów metod z biblioteki rodzimej z zewnętrznego dostawcy, w tym przypadku z biblioteki DLL przestrzeni użytkownika do części sprzętu. Ten dostawca zaczął teraz dostarczać wersje DLL zarówno x86, jak i x64, i myślę, że moja aplikacja skorzystałaby na uruchomieniu jako proces 64-bitowy. Z wyjątkiem tej jednej biblioteki DLL wszystko jest kodem .NET, więc budowanie jako „Dowolny procesor” będzie działać.

Wszystkie sygnatury metod w natywnej bibliotece DLL są takie same na 64-bitowej, jednak nazwa biblioteki DLL jest inna (Foo.dll vs. Foo_x64.dll). Czy istnieje jakikolwiek sposób, dzięki sygnaturom P / Invoke lub wpisom app.config, że mogę wybrać, który DLL ładować na podstawie działającej architektury procesora?

Jeśli zamiast różnych nazw DLL ma taką samą nazwę w różnych folderach, czy otwiera to inne opcje?

NB: Ponieważ istotne jest, aby wersja tej biblioteki DLL przestrzeni użytkownika była zgodna z zainstalowanym sterownikiem jądra dla sprzętu, biblioteka DLL nie jest dołączona do naszej aplikacji, ale zamiast tego zależy od instalatora dostawcy umieszczenia go w katalogu w% ŚCIEŻKA%.

questionAnswers(3)

yourAnswerToTheQuestion