Есть ли способ, чтобы конкретная DLL, на которую ссылалась подпись P/Invoke (DllImport), зависела от архитектуры ЦП?Архитектура процессора Независимый P/Invoke: Может ли DllName или путь быть «динамическим»?
Я работаю над приложением, которое загружает большое количество сигнатур методов из родной dll от стороннего поставщика, в этом случае DLL-интерфейс пользовательского пространства к части оборудования. Этот поставщик теперь начал поставлять как x86, так и x64 версии DLL сейчас, и я думаю, что мое приложение выиграет от работы как 64-битный процесс. За исключением этой DLL, все это код .NET, поэтому создание «Any CPU» будет работать.
Все сигнатуры метода в родной DLL одинаковы на 64-битной основе, однако имя библиотеки DLL отличается (Foo.dll и Foo_x64.dll). Есть ли какой-либо способ через подписи P/Invoke или записи app.config, я могу заставить его выбрать, какую DLL загружать на основе текущей архитектуры процессора?
Если вместо разных DLL-имен это одно и то же имя в разных папках, открывает ли он какие-либо другие параметры?
NB: Поскольку версия DLL этого пользовательского пространства соответствует установленному драйверу ядра для аппаратного обеспечения, DLL не поставляется вместе с нашим приложением, но вместо этого мы зависим от установщика поставщика, чтобы поместить его в в папке% PATH%.
Возможный дубликат http: // stackoverflow.com/questions/23215518/target-32-bit-or-64-bit-native-dll-depends-on-environment –
Я думаю, что дублирование - это наоборот, учитывая, что этот вопрос на четыре года старше этого :) – Cheetah