所以我想知道我是否有一个项目中有一堆有用的功能,如果它们可以为这些功能制作某种类型的库。例如,我喜欢ShaderLoader.h,ShaderLoader.cpp,MyMath.h,MyMath.cpp等。是他们的一些方法来进行这些编译,以便不是将这些文件的alllll添加到每个新项目中,而是可以简单地链接文件。也许是.dll?顺便说一句,我的项目是用c ++编写的。
如果我这样做,主要功能会发生什么?变量的工作方式是否相同?
非常感谢!
答案 0 :(得分:2)
如果您的许多.cpp
个文件中没有main
个功能,而cpp
个main
个文件使用function
其他.cpp
个object
文件然后一种可能的方法是在编译时将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.o
和add.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