DLL Hell: SnacNp64.dll + gtkD

Очевидно, когда я запускаю некоторые 32-разрядные приложения, созданные с помощью gtkD в системах Win64 с установленным Symantec Endpoint Protection и подключенными сетевыми дисками, и пытаюсь открыть диалоговое окно файла, что-то во время выполнения пытается загрузить 64-разрядную версию SnacNp64.dll DLL, в 32-битное адресное пространство. Эта DLL-библиотека является компонентом Symantec Endpoint Protection, который используется для сетевой работы, поэтому эта ошибка возникает только при таком узком стечении обстоятельств.

Когда я запускаю программу из собственной консоли Win64 и пытаюсь загрузить диалоговое окно файла, я получаю:

Файл образа C:\Program Files (x86)\Symantec\Symantec Endpoint Protection\SnacNp64.dll является допустимым, но предназначен для типа компьютера, отличного от текущего компьютера. Выберите OK для продолжения или ОТМЕНА для сбоя загрузки DLL.

Когда я выбираю "Отмена", все работает нормально, и программа, похоже, не страдает от неудачной загрузки DLL. Когда я выбираю ok, я получаю нарушение прав доступа, предположительно потому, что gtkD пытается загрузить 64-битную DLL в 32-битную программу.

Однако, когда я запускаю из терминала Cygwin вместо собственного терминала Win64, кажется, что консоль Cygwin перехватывает ошибку и вынуждает загрузку DLL, что приводит к сбою моего приложения.

Эта ошибка, по-видимому, не возникает для других 32-битных приложений на основе GTK, таких как GIMP, на тех же компьютерах.

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

0 ответов

Другие вопросы по тегам