Как я должен назвать нативную DLL, распространяемую как в 32-битной, так и в 64-битной форме?

StackOverflow https://stackoverflow.com/questions/2385480

  •  24-09-2019
  •  | 
  •  

Вопрос

У меня есть коммерческий продукт, который является DLL (родной 32-битный код), и теперь пришло время построить его в 64-битной версии. Таким образом, при установке на 64-битных окна 32-битная версия переходит в Windows Syswow64, а 64-битная версия входит в ... Windows System32! (Я кусаю свой язык здесь ...) Или DLL (S) могут быть установлены рядом с клиентским приложением.

Что я должен назвать 64-битная DLL?

Одно название, что и 32-битное: два файла, которые делают то же самое, имеют то же имя, но совершенно не взаимозаменяемые. Разве это не рецепт путаницы и проблем поддержки?

Различные имена (например, Product.dll и product64.dll): теперь клиентские приложения должны знать, используются ли они 32-битные или 64-битные для ссылки на мою DLL, и есть языки, где это не известно до Время - .net - только один пример. И теперь все статически составленные клиенты должны описывать декларации импорта: если цель = Win64, затем импортировать бла из «Product64.dll» еще импортла BLAH из «Product.dll» Endif

Продукт содержит массивные количества C-кода, а большой кусок C ++ - портирование его к C # не является опцией.

Совет? Предложения?

Это было полезно?

Решение 3

Я решил следить за Microsoft на этом, кто сохранил те же имена для DLL в System32, когда они пошли на 64-битные. На Win7 / 64 System32 Avicap32.dll - это 64-битная DLL!

Существует некоторая потенциальная путаница для себя и моих клиентов, имеющих 32-битные и 64-битные DLL с тем же именем. Однако я думаю, что было бы хуже, чтобы все мои клиенты должны сделать их кодовую ширину слов. Особенно разработчики .NET, которые часто могут оставлять свою целевую платформу, установленную на «anycpu».

Другие советы

Клиентские приложения не делайте должны «знать», они 32 бит или 64 бит. ОС автоматически загружает DLL из соответствующего местоположения, потому что невозможно загрузить 32-битную DLL в 64-битный процесс, и невозможно загрузить 64-битную DLL в 32-битный процесс.

Если 32-битное приложение пытается Загрузите что-нибудь из System32, ОС будет автоматически перенаправлять его в каталог SYSWOW64, принудительно загрузка 32-битной версии.

Имея разные имена, вы победите весь этот механизм. Механизм, построенный специально, чтобы позволить вам использовать одно и то же имя.

Почему бы не префикс DLL с подчеркиванием ... например, product_32.dll.dll а также Product_64.dll.? Или указал это, используя префикс платформы - product_x86_32.dll. а также product_x86_64.dll.? По крайней мере, это очистит путаницу именования DLL ... Что вы думаете?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top