C++代码::不使用头文件编译的块
C++ Code::Blocks not compiling with header files
晚上好!(早上?)
我想知道是否有人熟悉以下问题。这里有三个文件,分别是Cat.cpp、Cat.h和CatMain.cpp。问题如下:
当我尝试构建Cat.cpp时,我会得到错误"未定义的引用WinMain@16".
当我尝试构建CatMain.cpp时,我会得到speak和jump函数的未定义引用错误。
文件在同一个文件夹中,代码只有一行:
Cat.cpp
#include <iostream>
#include "Cat.h"
using namespace std;
void speak()
{
cout << "meow" << endl;
}
void jump()
{
cout << "meow?" << endl;
}
类别h
#ifndef CAT_H
#define CAT_H
void speak();
void jump();
#endif // CAT_H
CatMain.cpp
#include <iostream>
#include "Cat.h"
using namespace std;
int main()
{
speak();
jump();
return 0;
}
这个代码有什么问题吗?或者有人知道这是代码::块还是编译器问题吗?
非常感谢您的帮助=)
到目前为止,您的代码所做的一切都是这样的:
类别.cpp:
#include <iostream>
using namespace std;
void speak();
void jump();
void speak()
{
cout << "meow" << endl;
}
void jump()
{
cout << "meow?" << endl;
}
CatMain.cpp::
#include <iostream>
using namespace std;
void speak();
void jump();
int main()
{
speak();
jump();
return 0;
}
Cat.cpp
缺少一个main
方法,因此无法编译。
您的CatMain.cpp
对speak()
和jump()
没有任何定义,因此出现未定义错误。
要点:CatMain.cpp不知道Cat.cpp想做什么。
int main() { return 0; }
添加到Cat.cpp应该可以编译。
void speak(){
cout << "defined" << endl;
}
void jump(){
cout << "defined" << endl;
}
添加到CatMain.app也应该适用。
您的代码很好。最有可能的是,您不想编译单独的文件,而是将项目作为一个整体。您应该将两个cpp都添加到IDE中的项目中,并且链接器会将它们链接在一起以解决这两个问题。
相关文章:
- 使用 Makefile 中的头文件编译 Pybind (不使用 cmake)
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 无论如何可以将webm / mp4文件编译/记忆为.exe程序吗?(C++)
- 从生成文件编译错误:"Unable to open output file" ..."No such file or directory"
- 如何使用 GLFW 预编译的二进制文件编译 Visual Studio 2019 发布版本
- Arduino IDE中自定义库类的.h文件编译错误的原因是什么
- makefile和错误将与大型项目分开的文件编译
- 如何使用生成文件编译具有多个目录的 c++ 项目
- 我可以将Visual Studio 2015头文件编译成dll并在VS2013中使用它吗?
- 使用Bazel将C 文件编译为python.h
- 使用 .a 文件编译简单的C++文件
- OpenCV 3.2 文件编译
- 如何从多个 cpp 文件编译 WebAssembly
- 从多个文件编译可以"undefined reference"
- 使用静态依赖性为共享二进制文件编译语法需要更加清晰
- 将Gsoap Src文件编译到我的项目中
- 如何用多个文件编译make下的dlib
- 字段的类型不完整,从多个文件编译
- 强制将特定文件编译为Objective-C/文件类型,但将整个项目编译为Objective C++
- OpenGLES 标头(包括 Availability.h)可防止 CPP 文件编译