蛋疼的extern和error LNK2001: unresolved external symbol

编程过程中总会遇到一些小问题,有些是大意引起的,越是着急越找不到问题所在;有些是因为有一些小知识点你不知道引起的。总之,有时找不到问题所在真的很蛋疼。。。


        这篇小短文要说的是因为extern和源文件后缀名(.cpp ? .c)引起的 连接错误“error LNK2001: unresolved external symbol "int test_test" (?test_test@@3HA)”, 开发环境为Visual Studio 2005 + Windows XP。 

       vs2005建立了console空工程之后,添加了下面文件:

  1、main.cpp

#include "test.h"
void main()
{
test_test = 2;
}

2、test.h

#ifndef test_h
#define test_h
extern int test_test;
#endif


3、test.c

#include "test.h"
int test_test = 123;


【编译】时,就出现下面的错误:

1>main.obj : error LNK2001: unresolved external symbol "int test_test" (?test_test@@3HA)


      刚开始找了很久就发现问题,真的很蛋疼,后台干脆早点去吃饭了,回来跟之前代码中用到extern的代码对比了一下。突然想到了,可能是因为源文件后缀名引起的,修改test.c为test.cpp,一些OK了,蛋也不疼了。于是写出来,希望能帮到其他朋友。

    (”error LNK2001: unresolved external symbo“这个错误有很多种原因引起的,这只是一种情况。另外也没有在Visual Studio的其他版本或其他编译器试过)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
这个错误信息 "error lnk2001: unresolved external symbol" 是一个编译器错误,通常在使用精易论坛的时候出现。这个错误表示编译器无法找到特定的符号或函数的定义。 要解决这个错误,我们可以采取以下的步骤: 1. 检查头文件是否正确引入:首先,要确保相关的头文件已经正确地含在程序中。如果忘记含相关的头文件,编译器将无法找到所需的函数或符号的定义。请仔细检查代码中的`#include`语句,并确保正确引入了必要的头文件。 2. 检查库文件是否正确链接:编译器可能无法找到所需的库文件,导致错误。这时,我们需要查看链接器设置,确保正确指定了需要链接的库文件。在精易论坛的情况下,可能需要链接到相应的精易线程库文件。 3. 检查函数的定义:如果出现 unresolved external symbol 错误,说明编译器找不到所需函数的定义。请确保代码中的函数定义是完整的,没有拼写错误,并且与函数声明匹配。 4. 检查命名空间:如果使用了命名空间(namespace),请确保在对应的地方添加了命名空间的声明。否则,编译器将无法找到所需函数或符号的定义。 5. 检查函数的修饰符:在一些情况下,函数的修饰符可能影响到编译器对函数的查找。可能需要在函数名字前添加`extern "C"`来避免修饰符引起的错误。 通过仔细检查和排除上述可能的问题,应该能够解决"error lnk2001: unresolved external symbol"错误。如果仍然遇到困难,可以参考精易论坛的文档或向相关论坛或开发者寻求帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piaopiaolanghua

感谢鼓励,再接再厉!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值