V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Keen06
V2EX  ›  C++

windows 下 g++编译.cpp 文件,执行生成的.exe 文件,显示无法定位程序输入点于动态链接库

  •  
  •   Keen06 · 2022-03-11 21:57:49 +08:00 · 2200 次点击
    这是一个创建于 981 天前的主题,其中的信息可能已经有所发展或是发生改变。

    情况为在代码中使用 STL 库中的 vector 模板时出错,编译没报错,执行可执行文件时报错

    源代码:

    #include<iostream>
    #include<vector>
    using namespace std;
    
    int main(){
    
        vector<int> a;
        int cap = a.capacity();
        cout<<cap<<endl;
        for(int i = 0; i<=cap;i++){
            a.push_back(1);
        }
        cout<<a.capacity()<<endl;
    
        return 0;
    }
    

    出错信息: 无法定位程序输入点_gxx_personality_sj0 于动态链接库...\a.exe(可执行文件所在目录)

    不知道哪里出错了,不使用 vector 模板可以正常运行,该怎么解决呢,谢谢大家了!

    第 1 条附言  ·  2022-03-11 22:47:46 +08:00
    自己查了查,发现在编译的时候加上 -static 或-static-libstdc++, 强制静态链接库就 ok 了。。。感觉还是了解的太少
    8 条回复    2022-03-12 22:58:59 +08:00
    proxytoworld
        1
    proxytoworld  
       2022-03-11 22:45:03 +08:00
    实测没问题
    Keen06
        2
    Keen06  
    OP
       2022-03-11 22:49:40 +08:00
    @proxytoworld 不是代码问题,感觉是编译器的链接方式问题,具体不太清楚,直接强制静态链接暴力解决。。。。
    Keen06
        3
    Keen06  
    OP
       2022-03-11 22:53:00 +08:00
    @proxytoworld 感谢回复哈哈哈
    pursuer
        4
    pursuer  
       2022-03-11 22:53:25 +08:00
    估计是 Windows 找到版本不一致的 g++运行时了。。详细的可能要查 PATH 变量了,或者调试器调一下
    12101111
        5
    12101111  
       2022-03-11 22:55:33 +08:00
    你要把 mingw 的运行时库复制到 exe 所在的目录
    darknoll
        6
    darknoll  
       2022-03-12 07:30:15 +08:00 via Android
    设置环境变量
    Keen06
        7
    Keen06  
    OP
       2022-03-12 10:19:56 +08:00
    多谢大家回复了
    tinkerer
        8
    tinkerer  
       2022-03-12 22:58:59 +08:00
    windows 下尽量用 msvc
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:40 · PVG 01:40 · LAX 09:40 · JFK 12:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.