【问题标题】:The procedure entry point _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev could not be located in the dynamic link library [duplicate]无法在动态链接库中找到过程入口点_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev [重复]
【发布时间】:2017-02-25 02:29:50
【问题描述】:

最近我一直在尝试将字符串存储在变量中。我在网上做了很多搜索,我发现的大多数答案都推荐使用 std::string。所以我写了一个如下所示的测试程序:

#include <iostream>
#include <string>
using namespace std;

int main(){
    string s;
    getline(cin,s);
    cout << s;
}

程序编译得很好,但是,当我运行程序时,我发现了这个错误:`Error Message

我是一个巨大的编程初学者,对正在发生的事情感到困惑。谁能给我一些关于这里发生的事情的见解?谢谢!

另外,我正在使用 GCC 编译器。

编辑:我已经成功解决了这个问题。我所做的只是使用网络上的教程重新安装 GCC。我不知道出了什么问题,但现在已经修复了。

【问题讨论】:

  • 你是如何编译你的代码的?
  • 使用 g++ 代替 gcc。第二个自动链接标准库。
  • 缺失的符号(在我修正了错别字之后)分解为std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string(),它更广为人知的是std::string 的默认构造函数。这可能是安装问题。
  • 你应该显示你的命令来编译程序。如果您还没有这样做,那么使用g++ 而不是gcc;或使用gcc -x c++ 强制c++ 编译。另请参阅 Stack Overflow 上的 Converting std::__cxx11::string to std::string 和 Red Hat 博客上的 GCC5 and the C++11 ABI
  • 我的编译代码是“g++ -std=c++14 test.cpp -o test.exe” 你认为我应该改变什么来编译?如果你已经回答了这个问题,请原谅我,但我还是初学者,所以我还不熟悉这一切。

标签: c++ string variables stdstring


【解决方案1】:

使用GCC编译C++时,需要使用g++驱动程序,而不是gcc。后者将编译翻译单元,但不会正确链接可执行文件。

【讨论】:

  • 编译代码是 "g++ -std=c++14 test.cpp -o test.exe" 但是,我仍然得到同样的错误
  • @Zachary:啊,请参阅 jww 关于 GCC 最近 ABI 更改的评论。
猜你喜欢
  • 2013-03-19
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多