链接器在标头中的std :: map失败

时间:2017-05-23 06:02:57

标签: c++ mingw std ld stdmap

我正在尝试使用code :: blocks和mingw创建一个简单的c ++程序,我遇到了某种链接错误。当我尝试构建项目时,ld返回1而没有其他详细信息。我尝试在线搜索有关此类问题的信息,但我找不到任何内容。

我尝试将example的定义从test.hpp移到test.cpp,这确实解决了链接问题,但它使我无法访问{{1}来自导入example的其他文件。我也尝试完全删除命名空间,但我想避免出于组织原因(如果这是一个完全不恰当的命名空间使用我很感激知道)。我试图让它最终使我的程序的几个部分能够在运行时访问和更新test.hpp

test.hpp

example

TEST.CPP

#include <map>
#include <string>

namespace testing{

    std::map<std::string,int> example;

}

构建输出

#include "test.hpp"
#include <iostream>

namespace testing {

    std::map<std::string,int> example;

}

2 个答案:

答案 0 :(得分:3)

在某处应该有一个更全面的构建日志,它会说多次定义WebElement

解决方案很简单:只使用testing::example关键字在头文件中声明变量:

extern

答案 1 :(得分:0)

标头和cpp都定义了变量example。您应该将标头中的变量声明为extern

How do I use extern to share variables between source files?