使用C++的多个源文件
Multiple source files with C++
我有一个简单的项目,分为以下源文件:
my.h:
#ifndef MY_H
#define MY_H
extern int val;
void print_val();
#endif
my.cpp:
#include "my.h"
#include <iostream>
void print_val()
{
std::cout << val;
}
main.cpp:
#include "my.h"
int main()
{
val = 4;
print_val();
return 0;
}
当我编译时,我收到以下错误:
1>main.obj : error LNK2001: unresolved external symbol "int val" (?val@@3HA)
1>my.obj : error LNK2001: unresolved external symbol "int val" (?val@@3HA)
1>c:...test.exe : fatal error LNK1120: 1 unresolved externals
为什么会这样?我只想在头中声明一个变量和函数,并在一个单独的源文件中定义该函数。我使用Visual C++2010学习版,该项目是一个Win32控制台应用程序。
在my.cpp
中,您可能想要定义您的外部变量,如下所示:
int val; // optionally you can also initialize it here, like this: int val=0;
这将确保编译器为该变量实际分配一个对象,该对象稍后可以链接到可执行文件中。
请注意,确保在所有源文件中只有一个此类extern
变量的定义,否则您将有重复的符号,链接器将对
您正在定义函数,但从未声明变量val
。这就是为什么找不到它的符号。
相关文章:
- 为测试目标创建具有不同源文件夹的文件
- 将图像添加到资源文件夹UWP C++
- 视觉工作室项目.提取源文件夹名称
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- make 命令如何避免重新编译未更改的源文件?
- C++两个源文件之间共享的枚举的静态实例
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 生成文件:动态源文件名和对象目录
- 无法使用 CMake 从其他文件夹添加源文件
- MinGW64 - Unicode 源文件错误?
- 有关从C++中的不同源文件引用类的问题
- "错误 (活动) E1696 无法打开源文件 "stdafx.h"--
- CMakeLists:使用 ExternalProject 从 Github 添加源文件
- 如何打印源文件中与 GDB 中的程序流关联的所有行号
- CMake 源文件找不到头文件
- 使用宏计算源文件行?
- 如何在 Eclipse 中一次从多个源文件进行构建
- 使用多个源文件时对类成员函数的未定义引用
- 给定一个源文件,有没有办法要求 gcc 返回仅直接包含的头文件的列表?
- 是否可以跨多个源文件构建 constexpr 数据结构?