为什么我在VC的工程中添加一个.C文件,如a.c
然后在a.c里定义一个全局变量如 int g_val = 0;
然后我在另外一个.cpp文件如b.cpp里外部引用这个
全局变量,如extern int g_val;然后在b.cpp中的某
个函数使用g_val;如 int val = g_val;这样在编译的时候就通不过,是在链接的时候出错,提示b.obj
error LNK2001: unresolved external symbol "int g_val" (?g_val@@3HA)
这应该是外部引用符号g_val在链接的时候找不到外部链接,可a.obj也成功编译了阿如果把a改成.cpp文件就可以请教大家有没有遇到过类似的问题阿
然后在a.c里定义一个全局变量如 int g_val = 0;
然后我在另外一个.cpp文件如b.cpp里外部引用这个
全局变量,如extern int g_val;然后在b.cpp中的某
个函数使用g_val;如 int val = g_val;这样在编译的时候就通不过,是在链接的时候出错,提示b.obj
error LNK2001: unresolved external symbol "int g_val" (?g_val@@3HA)
这应该是外部引用符号g_val在链接的时候找不到外部链接,可a.obj也成功编译了阿如果把a改成.cpp文件就可以请教大家有没有遇到过类似的问题阿
extern int a;
你写到.h里
(c++编译器给他改了名字)例如是g_val_111在.c文件中写int g_val;
c编译器就认为g_val_222(也修改了)是一个变量而.cpp文件要找g_val_111,.c文件把她编译成了g_val_222
找不到了,怎么办。连接错误正确方法
extern "C"
{
//定义在c文件中用到的变量和函数
}
这样才能够正确联接
extern int g_val;在b.c中定义全局变量:
int g_val = 0;在b.cpp中包含头文件就可以了