蛋疼的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的其他版本或其他编译器试过)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章