You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows运行C++编译程序出现_ZNKSt7__cxx11入口点未找到错误

问题描述

我编写了一个包含文件读写、打印功能,且能通过外部可执行程序下载文件的简单代码,读取文件使用mINI库。

  • 引入的头文件:
    string
    iostream
    cctype
    vector
    stdio.h
    memory
    cstdio
    stdexcept
    sstream
    "mini/ini.h"
    memory
    
  • 定义的宏:
    CURL_STATICLIB
    
  • 编译Windows 32位程序的命令:
    i686-w64-mingw32-g++ -o main.exe main.cpp
    
  • 运行时错误信息:

    Der Prozedureinsprungpunkt "_ZNKSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE12find_last_ofEcj" wurde in der DLL "J:\main.exe" nicht gefunden.
    翻译后:
    The procedure entry point "_ZNKSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE12find_last_ofEcj" was not found in the DLL "J:\main.exe".

解决方法

这个错误是GCC C++标准库ABI不兼容导致的:__cxx11是GCC 5.0及以上版本引入的新std::string实现,你的编译环境和运行环境的标准库ABI版本不匹配,或者链接了不同ABI的依赖库。

尝试以下方案:

  1. 强制使用旧ABI编译
    添加-D_GLIBCXX_USE_CXX11_ABI=0编译选项,让编译器生成兼容旧ABI的代码:
    i686-w64-mingw32-g++ -D_GLIBCXX_USE_CXX11_ABI=0 -o main.exe main.cpp
    
  2. 静态链接标准库
    将C++标准库和GCC运行库打包进可执行文件,避免依赖系统中的DLL:
    i686-w64-mingw32-g++ -static-libstdc++ -static-libgcc -o main.exe main.cpp
    
  3. 统一依赖库编译环境
    确保mINI库也是用相同版本的i686-w64-mingw32-g++编译的,且编译选项一致,避免跨ABI链接。

内容的提问来源于stack exchange,提问作者Kroyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:57:28