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

Ell*_*Ell 6 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的文件夹中

谢谢

aut*_*ret 9

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

我使用mingW编译了12 klines C++项目; 它在MSYS中运行良好,但在本机cmd shell中调用whith时失败,声称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) {}
Run Code Online (Sandbox Code Playgroud)

它必须针对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%
Run Code Online (Sandbox Code Playgroud)

现在一切都运行良好!


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

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

干杯