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";
}
为了包含第一个项目,我:
将第一个项目的根目录添加到第二个项目的 "Search Directories" -> "Compiler" 列表中
将第一个项目的相同根目录添加到第二个项目的 "Search Directories" -> "Linker" 列表
当我尝试使用 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 目录,它起作用了。
即使经过相当多的谷歌搜索,我在 C++ 中遇到了一个问题,我创建了一个带有头文件和源文件的项目,然后尝试创建另一个包含第一个项目的项目。我发现了
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";
}
为了包含第一个项目,我:
将第一个项目的根目录添加到第二个项目的 "Search Directories" -> "Compiler" 列表中
将第一个项目的相同根目录添加到第二个项目的 "Search Directories" -> "Linker" 列表
当我尝试使用 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 目录,它起作用了。