我有一个VS2015中开发的DLL,用于实现用于仿真的外部模型。 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
当我在生成的DLL上运行dumpbin.exe时,得到的是调试版本:
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
有什么想法或建议吗?