使用外部整数的 LNK2001 错误

Posted

技术标签:

【中文标题】使用外部整数的 LNK2001 错误【英文标题】:LNK2001 error using extern int 【发布时间】:2013-03-09 22:14:14 【问题描述】:

我有这个简单的例子,但无法编译:

三个文件:my.hmy.cppuse.cpp

//my.h
extern int foo;
void print_foo();
void print(int);

//my.cpp
#include "my.h"
#include "../../stb_lib_facilities.h" //inlcudes cout, cin, etc

void print_foo()
    cout << foo << endl;


void print(int i)
    cout << i << endl;


//use.cpp
#include <iostream>
#include "my.h"

int main()
    foo = 7;
    print_foo();
    print(99);

    return 0;

当我尝试编译它时,我得到三个错误: LNK2001:外部“int foo”.. LNK2019:外部“int foo”.. LNK1120:

我做错了什么? 感谢您的帮助

【问题讨论】:

【参考方案1】:

您没有全局变量的任何定义。在您的任何 .cpp 文件中,但仅在其中 一个 中,您应该添加以下内容:

int foo = 0; // This is a definition

您的声明

extern int foo; // This is a declaration

仅告诉编译器存在这样的全局变量,但随后没有您实际定义它的地方。因此,链接器最终会抱怨您有一个未定义的引用符号。

【讨论】:

@nachogsiri:很高兴我能帮上忙

以上是关于使用外部整数的 LNK2001 错误的主要内容,如果未能解决你的问题,请参考以下文章

错误 LNK2001:未解析的外部符号 WINAPI [重复]

错误 LNK2001:未解析的外部符号 LIBID_

为啥错误 LNK2001:在这种情况下无法解析外部符号? [复制]

错误 LNK2001:未解析的外部符号

MSVS 错误 LNK2001:未解析的外部符号

VS2008 VC++/MFC 出错LNK2001与1120