“程序入口点_ZNSt8_detail15_List_node_base7_M_hookEPS0_无法位于动态链接库libstdc -6.dll中。”

时间:2012-11-13 11:32:37

标签: c++ mingw libstdc++

有一个小问题。我有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

的文件夹中

THX

1 个答案:

答案 0 :(得分:8)

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

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

相反,简单的跟随程序在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中,另一个先前由一个拥有自己版本的程序安装其目录中的lib。但是,它已经修改了PATH,以便首先找到它的lib!

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

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

现在一切正常!


马丁,我不能写你的评论,所以我编辑了我的信息: 你即将是正确的。 Windows如何查找DLL在这里解释:

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

干杯