c++ - 包含库中的外部变量

c++ - extern variable in included library

即使经过相当多的谷歌搜索,我在 C++ 中遇到了一个问题,我创建了一个带有头文件和源文件的项目,然后尝试创建另一个包含第一个项目的项目。我发现了 问题,但提问者能够生成一个我似乎无法生成的 .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";
}

为了包含第一个项目,我:

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

undefined reference to 'num'

一些谷歌搜索建议我将第一个项目的 .lib/.a 文件添加到 "Linker Settings" -> "Link Libraries" 列表中。但是,我的第一个项目没有 .lib/.a 文件,我不太确定如何创建一个。

还需要什么才能确保我的 "library" 项目可以包含在我的第二个项目中?

感谢 Sami Kuhmonen 的评论,我意识到问题是我将构建目标设置为可执行文件而不是静态库,这就是为什么我得到的是 .exe 文件而不是 .a文件。我所要做的就是更改构建目标,将 .a 文件添加到 "Linker Settings" -> "Link Libraries" 列表并更改 "Search Directories" -> "Compiler"/"Linker" 列出分别搜索 include 和 src 目录,它起作用了。