【发布时间】:2019-07-15 07:25:10
【问题描述】:
我有一个项目,它的 main 方法从另一个源文件 BigDog(int) 访问另一个方法。我很确定代码是正确的,但 CodeBlocks 似乎无法检测到该方法的定义,除非我使用 CodeBlocks 中的调试构建来构建另一个文件。在 Release 中,我在构建时收到以下错误:
错误:未定义对“BigDog(int)”的引用
为什么会这样?
main.cpp
#include <iostream>
using namespace std;
void BigDog(int KibblesCount);
int main()
{
BigDog(3);
return 0;
}
mystuff.cpp
#include <iostream>
using namespace std;
void BigDog(int KibblesCount)
{
cout << KibblesCount;
}
【问题讨论】:
-
代码没有问题。不知何故,您构建它是错误的,也许您的发布版本项目设置不正确。在这个距离很难分辨。
-
如果您引用了尝试发布版本时收到的确切错误消息,可能会有所帮助。
-
@errandstudy 这意味着当您进行发布构建时,您不会编译和/或链接 mystuff.cpp。换句话说,您的项目设置错误以进行发布构建。我猜您只是将 mystuff.cpp 添加到项目的调试部分。
-
试着改掉
using namespace std的习惯。该前缀的存在是有原因的:保护您免受命名冲突,并明确这些函数、数据结构和其他内容的来源。 -
@RickPat,没有迹象表明他有这样的头文件。
标签: c++ codeblocks