DllMain () не экспортируется при компиляции в режиме выпуска - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть DLL, разработанная в VS2015 для реализации внешней модели для моделирования.DLL экспортирует фабричную функцию obj и функцию DllMain ().Когда я компилирую DLL в режиме отладки, все работает как положено, когда я компилирую в режиме релиза, он падает, потому что DllMain () не существует.

Я сравнил настройки компилятора и ничего не выскакивает каквероятный кандидат, если не отключить оптимизацию, что, кажется, не очень хороший путь.Я попытался поместить вызов внутри DLL в DllMain (), чтобы компоновщик подумал, что у него есть причина для его включения, но, похоже, это не имеет значения.

Декларация экспорта выглядит следующим образом:

#ifdef MSVS_CPP
    extern "C" MSVSDLL_API Battery* External_BatteryFactory();
    extern "C" MSVSDLL_API bool DllMain();
#else
    extern "C" Battery* External_BatteryFactory();
    extern "C" bool DllMain();
#endif

Когда я запускаю dumpbin.exe в полученной DLL, я получаю это для отладочной версии:

ordinal hint RVA      name
(bunch of name mangled member functions)
     39   26 000121A0 DllMain = DllMain
     40   27 000125B0 External_BatteryFactory = External_BatteryFactory

а в режиме релиза я получаю только это:

ordinal hint RVA      name
(bunch of name mangled member functions)
     39   26 00002A50 External_BatteryFactory = External_BatteryFactory

Есть мысли или предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...