是他们编译项目的方法,以便所有的函数类都可以。进入一个你可以链接的文件?

时间:2015-07-25 18:13:57

标签: c++ compilation

所以我想知道我是否有一个项目中有一堆有用的功能,如果它们可以为这些功能制作某种类型的库。例如,我喜欢ShaderLoader.h,ShaderLoader.cpp,MyMath.h,MyMath.cpp等。是他们的一些方法来进行这些编译,以便不是将这些文件的alllll添加到每个新项目中,而是可以简单地链接文件。也许是.dll?顺便说一句,我的项目是用c ++编写的。

如果我这样做,主要功能会发生什么?变量的工作方式是否相同?

非常感谢!

2 个答案:

答案 0 :(得分:2)

如果您的许多.cpp个文件中没有main个功能,而cppmain个文件使用function其他.cppobject文件然后一种可能的方法是在编译时将main其他文件的文件与.cpp文件链接。

示例 - 假设您有2个add.cpp个文件,

第一个是#include <iostream> #include <stdlib.h> #include <math.h> void add() { int a,b; std::cout<<"\nEnter two numbers"; std::cin>>a>>b; std::cout<<"Sum is : "<<a+b; }

undefined reference to WinMain

编译它会出现错误add.o,您将在项目文件夹中获得mul.cpp个文件。

第二个是#include <iostream> #include <stdlib.h> #include <math.h> void mul() { int a,b; std::cout<<"\nEnter two numbers"; std::cin>>a>>b; std::cout<<"Mul is : "<<a*b; }

undefined reference to WinMain

再次编译,您将收到错误mul.o,您将在项目文件夹中获得add.o个文件。 现在,如果您想在新项目/代码中使用这两个函数,则只需将mul.oadd.cpp链接到您的项目,而不是将mul.cpp#include <iostream> #include <stdlib.h> #include <math.h> void add(); void mul(); int main() { int a; std::cout<<"Press \n1 - Addition\n2 - Multiplication\n"; std::cin>>a; if(a==1) {add();} else if(a==2) {mul();} else {std::cout<<"Wrong choice";} return 0; } 添加到项目

{{1}}

这只是一个示例,通过这种方式,您可以链接文件而不是添加。

答案 1 :(得分:1)

是的,最好的方法是创建一个库(.dll或.a),你的主要工作方式相同,在你的项目应该使用这个库添加-Ipath to headers-Lpath_to_thelibrary -llibraryname,如果库名是libCustomLib,你应该写-lCustomLib