C++可执行文件是否包含.obj、.lib和.dll文件?

3
我有一个C++项目,可以生成一个C++ .exe可执行文件。该项目依赖于一些.lib和.dll文件。如果我想在另一台服务器上使用.exe文件,我可以仅传输.exe文件而不需要.lib、.dll和.obj文件吗?.exe文件是否已经构建包含这些文件?
谢谢!

你不能在没有它们的情况下复制可执行文件并查看是否能够正常工作来解决这个问题吗? - Ken White
1
如果我们谈论的是Visual Studio,那么你的程序将具有与你使用的Visual Studio版本相对应的Visual C++ Redistributable作为依赖项。你不应该复制.DLL文件,而是在目标机器上安装Visual C++ Redist。 - Havenard
Ken White:是的,但我想了解它的工作原理。 - Gabriel Beauchemin-Dauphinais
1个回答

2
在C ++中的编译/链接过程很复杂,但通常会遵循以下路径:
cpp / hpp-> obj
obj-> lib(.a)用于静态库 或 obj-> dll(.so)用于动态库
obj,lib,dll-> exe 链接过程将获取obj和静态库并形成一个自包含的exe。 链接器使exe依赖于dll,但exe不会包含动态库。
回答您的问题,exe和dll(s)在运行时需要。 obj和静态lib文件绝对不会在运行时需要。

1
然而,不要仅仅确定您的程序依赖哪些DLL,并盲目地将它们复制到其他计算机上。这可能会起作用,但很可能不会,因为可能缺少其他依赖项或配置。 - Steve
1
除非您自己创建了这些DLL或知道它们可以轻松地以这种方式移植。 - Steve
1
请在继续之前考虑@Steve的重要评论。例如,不建议复制系统dll。 - Matthew Fisher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接