gpt4 book ai didi

c++ - 他们是一种编译项目的方法,以便您的所有功能类等。进入一个可以链接的文件?

转载 作者:行者123 更新时间:2023-11-28 00:13:48 24 4
gpt4 key购买 nike

所以我想知道我是否有一个包含大量有用函数的项目,如果它们是为这些函数创建某种库的一种方式。例如,我有像 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 - Addition\n2 - Multiplication\n";
std::cin>>a;
if(a==1)
{add();}
else if(a==2)
{mul();}
else
{std::cout<<"Wrong choice";}
return 0;
}

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

关于c++ - 他们是一种编译项目的方法,以便您的所有功能类等。进入一个可以链接的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com