在 Windows MSVC 上,是否可以将一些 .obj 合并为一个 .obj?如果是,我该怎么做?

use*_*873 5 c windows linker visual-c++

例如,a.obj b.obj c.obj刚刚用 编译出三个目标文件cl,希望将它们合并为一个combined.obj

SO 问题的评论指出,在 *nix 上可以使用ld. 然而,cl所有link似乎都只支持.exe,.dll.lib作为输出。


我想要对组合目标文件执行的整个过程如下:

  1. a.obj b.obj c.obj -> combined.obj
  2. combined.obj d.obj e.obj -> executable.exe

我的问题解决了。 a.obj b.obj c.obj使用一些尚未链接的变量和函数,我认为.lib因为它是一个库,所以不能容忍缺少函数,但实际上这是可以的。我可以将它们合并到一个.lib文件中:

lib *.obj /OUT:combined.lib
Run Code Online (Sandbox Code Playgroud)

use*_*873 0

似乎不是,但是将它们合并到一个中很方便.lib

lib *.obj /OUT:combined.lib
Run Code Online (Sandbox Code Playgroud)