首先,我是一名初学程序员,所以请提供可以理解的简单答案。
我在起诉Code :: Blocks,我正在尝试用C ++创建一个多文件项目。我正在使用SDL2。我的问题是,当我完全放入我的所有代码和功能时,它们会运行,当我将它们分开时,它们就不会。这是因为执行文件需要构建它没有得到的目标文件。它没有得到它们,因为编译器不会形成它们。换句话说,链接存在问题。编译器简单地说,没有“.o”文件。这些文件在项目中作为“链接文件”而不是“编译文件”。当我将它们设置为“编译文件”以及“链接文件”时,它们会产生错误,我所提到的文件中的各种变量都没有声明。但是当我使用变量将该文件包含在文件中时,它会被深深嵌套。
以下是两种方式:
第一种不起作用的方式,使用单独的文件。
在main.cpp中:
#include <SDL.h>
#include <other.h>
int var;
int linkVar;
int link1Var;
int link2Var;
#include "link.cpp"
#include "link1.cpp"
#include "link2.cpp"
int main( int argc, char* args[] )
{
linkFunc();
link1Func();
link2Func();
}
在link.cpp / link1.cpp / link2.cpp中:
void linkFunc()/void link1Func()/void link2Func() //Just a reference
{
//Code associated with var, link1Var, link2Var and link3Var.
}
第二种工作方式,所有功能都在一个文件中。
首先,我不想学习makefile的东西。如果有任何其他方法可以解决它,那就这样吧!
答案 0 :(得分:1)
Code :: Blocks为每个文件创建目标文件,并将其编译为单独的编译单元。它将编译并链接作为项目一部分的任何文件,并将其标识为源文件。
首先,删除cpp文件的#includes。然后尝试Project > Add files...
菜单选项将其他cpp文件添加到项目中。
答案 1 :(得分:0)
首先,你不应该在其他cpp文件上使用#include
,你可以在这里阅读:
include cpp
其次,当您尝试编译由单独文件组成的项目时,您应该使用g ++命令,如下所示:g++ main.cpp link.cpp link2.cpp etc'
您可以在此处阅读有关它的基本说明:use the g++ command
完全按照你的要求去做:
#摆脱包括任何cpp文件
#在你的主要函数之前使用属于其他cpp文件的任何函数的前向declerations:
void linkfunc();
void linkfunc2();
etc
.
.
.
int main()
{
}
#指定.h文件的直接路径,如下所示:
#include <C:/MinGW/SDL2/SDL.h>
#使用此命令:
g++ -I C:/MinGW/SDL2/ main.cpp link.cpp link2.cpp link3.cpp