我的设置相对简单。
我有一个新的Console C ++项目。
但我在C中玩全局变量,并添加了两个新的.c文件。
// Fruit.h
extern int global_variable;
现在来源:
// Fruit.c
#include "Fruit.h"
#include <stdio.h>
int global_variable = 37;
此外,
// Orange.h
void use_it(void);
和
// Orange.c
#include "Orange.h"
#include "Fruit.h"
#include <stdio.h>
void use_it(void)
{
printf("Global variable: %d\n", global_variable++);
}
最后,这是我的主要内容:
#include "stdafx.h"
#include "Orange.h"
#include "Fruit.h"
int _tmain(int argc, _TCHAR* argv[])
{
use_it();
return 0;
}
但这是我得到的错误:“错误LNK2019:未解析的外部符号”void __cdecl use_it(void)“(?use_it @@ YAXXZ)在函数_wmain中引用”
任何帮助?
遵循有关全球变量的建议:here
答案 0 :(得分:2)
你的主文件是一个C ++文件而外部文件是C,如果你想从头文件中引用C ++中的C函数应该用
包围声明#ifdef __cplusplus
extern "C"{
#endif
// declarations here
#ifdef __cplusplus
}
#endif
或
如果这些声明永远不会从C文件中看到,那么
将前缀为extern "C"
,因为C不知道extern "C"
的含义。
问题是编译器正在寻找一个C ++名称错位函数而不是C函数,它使用不同的修改(通常没有)。