DEP (/ NXCOMPAT) вызывает segfault в LoadLibrary (вниз в DllMainCRTStartup)

В этом случае у меня есть источник для приложения и DLL.

Когда оба компилируются без / NXCOMPAT, они отлично работают вместе. Но когда я компилирую оба с / NXCOMPAT, я получаю ошибку в глубине пространства ядра.

Если я скомпилирую dll с / NXCOMPAT и скомпилирую исполняемый файл без него, он также работает нормально. (Не удивительно, я полагаю, поскольку настройки DEP для исполняемого файла принудительно загружаются в DLL).

Ранее я видел segfault в MainCRTStartup (Примечание: не версия dll), после включения DEP, который был вызван другой опцией компоновщика. Тем не менее, в этом случае этот другой параметр компоновщика НЕ ​​установлен, поэтому я знаю, что это не ответ.

У кого-нибудь есть идея, где мне искать причину?

Изменить: дальнейшая странность. Я все это время запускал в отладчике в VS 2008, но когда я попытался запустить его без подключенного отладчика, segfault исчезает. Я считаю это очень неудовлетворительным решением, так как я до сих пор не знаю Зачем это делал это.

Отредактируйте 2-е: также segfaults, работающие в отладчике в VS 2013 Express.

0

Решение

Не имея кода, мы должны догадаться по симптомам. Мой хрустальный шар говорит, что ты делаешь вещи внутри LoadLibrary (то есть внутри DllMainCRTStartup) которые запрещены. И есть очень длинный список вещей, которые запрещены в LoadLibrary, включая загрузку любой другой DLL.

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

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector