调试实战 | 调试另外一个由于全局变量初始化顺序导致的 dll 加载失败问题(中)...

缘起

在上篇文章《调试实战 | 调试另外一个由于全局变量初始化顺序导致的 dll 加载失败问题(上)》中,解决了由于全局变量初始化顺序不对导致的崩溃问题。但是代码里还有一处非常隐蔽的bug,今天继续介绍一下这个问题及对应的解决方法。

示例程序

在上篇文章代码的基础上,修改LoadDlls 工程中的main() 函数代码,使其加载dll1.dll 和dll2.dll(上篇文章中只加载了dll1.dll)。修改后的关键代码如下:

int main()
{
    std::cout << "[+] load plugin start." << std::endl;

    const char* plugins[] = { "dll1.dll", "dll2.dll", /*"dll3.dll",*/ nullptr }; //<---- 只修改了这里
    auto loaded_module_map = LoadPlugins(plugins);

    std::cout << "[+] load plugin done, press any key to init plugins." << std::endl;
    system("pause");

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值