是他们编译一个项目的一种方式,这样你的所有函数类都可以.进入一个可以链接的文件

Is their a way to compile a project so that all your functions classes ect. go into one file that you can link?

本文关键字:一个 都可以 函数 文件 链接 项目 编译 他们 一种 方式      更新时间:2023-10-16

所以我想知道我的项目中是否有一堆有用的函数,它们是否可以为这些函数创建某种库。例如,我喜欢ShaderLoader.h、ShaderLoader.cpp、MyMath.h、MyMath.cpp等。是他们编译这些文件的某种方式,这样我就可以简单地链接一个文件,而不是将所有这些文件添加到每个新项目中。也许是.dll?顺便说一句,我的项目是用c++编写的。

如果我这样做,主函数会发生什么?变量会以同样的方式工作吗?

非常感谢!

如果有许多.cpp文件中没有main函数,而一个cpp文件中有main,使用其他.cpp文件的function,则一种可能的方法是在编译时将其他文件的object文件与main文件链接。

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

第一个是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.omul.o链接到您的项目,而不需要将add.cppmul.cpp添加到项目中。

#include <iostream>
#include <stdlib.h>
#include <math.h>
 void add();
 void mul();
 int main()
 {
   int a;
   std::cout<<"Press n1 - Additionn2 - Multiplicationn";
   std::cin>>a;
   if(a==1)
   {add();}
   else if(a==2)
   {mul();}
   else
   {std::cout<<"Wrong choice";}
   return 0;
 }

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

是的,最好的方法是创建一个库(.dll或.a(,您的main将同样工作,在应该使用该库的项目中添加-Ipath to headers-Lpath_to_thelibrary -llibraryname,如果库名称是libCustomLib,则应该编写-lCustomLib

相关文章: