对于我的生活,我无法弄清楚导致这种情况的原因......我一直得到未解决的外部符号错误。但是,如果我在头文件中放置一个空的定义,它会正确编译。
WINMAIN.CPP
#include "FILE_XXX.H"
int WINMAIN WinMain(...)
{
EnableOpenTest(); // call like this
return 0;
}
FILE_WORKS_CORRECTLY.H
#ifndef _FILE_WORKS_CORRECTLY_
#define _FILE_WORKS_CORRECTLY_
void EnableOpenTest() { }
#endif
然而,当我做这样的事情(正确)时,它不起作用,我得到一个编译时错误。
FILE_DOES_NOT_WORK_CORRECTLY.H
#ifndef _FILE_DOES_NOT_WORK_CORRECTLY_
#define _FILE_DOES_NOT_WORK_CORRECTLY_
void EnableOpenTest();
#endif
FILE_DOES_NOT_WORK_CORRECTLY.CPP
#include "FILE_DOES_NOT_WORK_CORRECTLY.H"
void EnableOpenTest() { /* do work here */ }
更新: 经过进一步调查,我发现问题与我在同一解决方案中有多个项目有关。然后我尝试从另一个项目中引用一个项目中的函数。显然我做错了。
答案 0 :(得分:0)
我看到的唯一错误是在cpp文件中你还需要包含返回类型。它应该是
void EnableOpenTest()
{
//Enter Code Here
}
答案 1 :(得分:0)
FILE_DOES_NOT_WORK_CORRECTLY.CPP
内部:
EnableOpenTest(){ /* do work here */ }
必须是
void EnableOpenTest(){ /* do work here */ }
看起来您的编译器将缺少的返回类型设置为int
,而不是通过错误消息向您大喊大叫。
你应该打开编译器警告,它会让你很快发现这些错误。
此外,在FILE_WORKS_CORRECTLY.H
内你还有另一个错误:
void EnableOpenTest() { }
必须是
inline void EnableOpenTest() { }
否则,如果此标头包含两次(即多于一个.cpp
文件),则会触发错误消息。
答案 2 :(得分:0)
解决了!
显然文件结构导致了很多这些问题。