【问题标题】:"the procedure entry point _ZNSt8_detail15_List_node_base7_M_hookEPS0_ could not be located in the dynamic link library libstdc -6.dll."“程序入口点 _ZNSt8_detail15_List_node_base7_M_hookEPS0_ 无法位于动态链接库 libstdc -6.dll 中。”
【发布时间】:2012-11-13 11:32:36
【问题描述】:

有一个小问题。我有 c++ 代码,它链接到一些库。我以前有源代码中的(原始)exe,并且可以在第一台机器上完美运行。还有第二台机器,我在其中处理源代码,更改它等。在第二台机器上,该源代码的构建工作正常,当我复制 second.exe 并尝试在第一台机器上运行它时它显示错误消息

“程序入口点_ZNSt8_detail15_List_node_base7_M_hookEPS0_在动态链接库libstdc++-6.dll中找不到。”

一件事,second.exe 与 original.exe 复制在同一个文件夹中,所以它应该看到 ddl,因为原始 dll 与 original.exe 在同一个文件夹中,不是吗? 它是用 MinGW 编译的,在 NetBeans 和项目属性中工作,有库添加(通过添加库文件)但 libstdc++-6.dll 没有添加。 libstdc++-6.dll 在 original.exe 所在的文件夹中

谢谢

【问题讨论】:

  • 我不知道导出损坏名称的可移植库如何,但答案类似于“不是非常”,特别是如果 DLL 是用一个编译器构建的,而消费代码是由另一个编译器构建的.如果您以这种方式混合和匹配二进制文件,您可能会遇到问题。
  • TY,在第一台机器上存在简单的不匹配,即在 mingw/bin/ 该 DLL 的较新版本中,在将其替换为编译机中的那个后,它可以完美运行......所以我猜,首先它在路径a中搜索DLL,然后在与run.exe相同的目录中搜索,不是吗?

标签: c++ mingw libstdc++


【解决方案1】:

我在 XP 中使用 MingW 时遇到了非常相似的问题。

我使用 mingW 编译了一个 12 klines C++ 项目;它在 MSYS 中运行良好,但在本机 cmd shell 中调用时失败,声称入口点 libstdc++-6.dll 中缺少 Z_St8_detail15_and_so_on。

相反,下面的简单程序同时在 MSYS 和 cmd 中运行:

#include <iostream>

using namespace std ;

class Hello {
  public:
  Hello() { cout << "Hello !" << endl ; }
} ;

Hello hello ;

int main (void) {}

它必须针对 libstdc++ (gcc -o hello hello.cpp -lstdc++) 进行编译,如果 -lstdc++ 被省略,编译当然会失败。所以名称修改可能不是唯一的问题。

我在资源管理器中搜索了 libstdc++-6.dll,我发现我的系统上有两个:一个安装在 migw32 中,另一个之前由拥有自己版本的程序安装其目录中的库。但是,它修改了 PATH 以便首先找到它的库!

我在当前 shell 的 PATH 开头插入了 Mingw 所在的路径。喜欢:

set PATH=C:\mingw\bin;D:\msys\1.0\local\bin;%PATH%

现在一切正常!


Martin,我不能在你的 cmets 中写信,所以我编辑了我的消息: 你是对的。此处解释了 windows 如何查找 DLL:

http://msdn.microsoft.com/en-en/library/7d83bc18%28v=vs.80%29.aspx

干杯

【讨论】:

    猜你喜欢
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 2018-08-13
    • 2021-02-16
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多