使用C++的多个源文件

Multiple source files with C++

本文关键字:源文件 C++ 使用      更新时间:2023-10-16

我有一个简单的项目,分为以下源文件:

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。这就是为什么找不到它的符号。