c ++ - 包含库中的extern变量

时间:2015-09-05 03:41:38

标签: c++ linker mingw codeblocks

即使经过大量的谷歌搜索,我在C ++中遇到问题,我用一个标题和一个源文件创建了一个项目,并尝试创建另一个包含第一个项目的项目。我发现了this问题,但提问者能够生成一个我似乎无法做的.a文件。

Header.hpp

extern int num;

Source.cpp

#include "Header.hpp"

int num = 2;

(顺便说一下,这都在Code :: Blocks中)

我做了另一个包含第一个项目的项目。

Main.cpp的

#include <iostream> 

#include "Header.hpp"

int main(int argc, const char* argv[])
{
    std::cout << num << "\n";
}

要包含第一个项目,我:

  • 将第一个项目的根目录添加到&#34;搜索目录&#34; - &GT; &#34;编译&#34;第二个列表

  • 将第一个项目的相同根目录添加到&#34;搜索目录&#34; - &GT; &#34;接头&#34;第二个列表

当我尝试使用MinGW编译此代码时,出现错误:

undefined reference to 'num'

一些谷歌搜索建议我将第一个项目的.lib / .a文件添加到&#34;链接器设置&#34; - &GT; &#34;链接库&#34;名单。但是,我的第一个项目没有.lib / .a文件,我不太确定如何创建。

还需要更多资料来确保我的图书馆&#34;项目可以包含在我的第二个项目中吗?

1 个答案:

答案 0 :(得分:1)

感谢Sami Kuhmonen的评论,我意识到问题在于我已经将构建目标设置为可执行文件而不是静态库,这就是我获取.exe文件而不是.a文件的原因。我所要做的就是更改构建目标,将.a文件添加到&#34;链接器设置&#34; - &GT; &#34;链接库&#34;列出并更改&#34;搜索目录&#34; - &GT; &#34;编译&#34; /&#34;接头&#34;列表分别搜索include和src目录并且有效。