在发布模式下编译时,DllMain()不导出

时间:2019-09-27 18:48:05

标签: visual-c++ dll

我有一个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

有什么想法或建议吗?

0 个答案:

没有答案