У меня есть 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
Есть мысли или предложения?