Visual c++ 从库中提取所有obj文件
如何从.lib文件中提取所有.obj文件?我找到的唯一方法是一次提取一个。有没有办法让它自动化Visual c++ 从库中提取所有obj文件,visual-c++,visual-studio-2013,Visual C++,Visual Studio 2013,如何从.lib文件中提取所有.obj文件?我找到的唯一方法是一次提取一个。有没有办法让它自动化 LIB.EXE /EXTRACT:member.obj Library.LIB 您可以编写一个简短的程序,使用system(…)-Function来执行调用 但是,这仍然会给您带来生成成员对象文件列表的问题。这是我最终使用的批处理文件,其用法是extract.bat mylib.lib或extract.bat*.lib @ECHO OFF SETLOCAL EnableDelayedExpansi
LIB.EXE /EXTRACT:member.obj Library.LIB
您可以编写一个简短的程序,使用
system(…)
-Function来执行调用
但是,这仍然会给您带来生成成员对象文件列表的问题。这是我最终使用的批处理文件,其用法是
extract.bat mylib.lib
或extract.bat*.lib
@ECHO OFF
SETLOCAL EnableDelayedExpansion
:Loop
IF "%1"=="" GOTO Continue
FOR %%F in (%1) DO (
SET LIBFILE=%%F
SHIFT
@ECHO !LIBFILE!
FOR /F %%O IN ('lib.exe /LIST !LIBFILE! /NOLOGO') DO (
@SET OBJFILE=%%O
@ECHO !OBJFILE!
SET OBJPATH=%%~dO%%~pO
SET OBJNAME=%%~nO
IF NOT EXIST "!OBJPATH!" md !OBJPATH!
IF EXIST "!OBJFILE!" ECHO !OBJFILE! exists, skipping...
IF NOT EXIST "!OBJFILE!" lib.exe /NOLOGO !LIBFILE! "/EXTRACT:!OBJFILE!" "/OUT:!OBJFILE!"
)
)
GOTO Loop
:Continue
这应该是公认的答案。工作得很有魅力!我的LIBFILE中的原始OBJPATH被映射到系统中不存在的“G:”驱动器。因此,当它试图将obj文件输出到原始路径时,它抱怨位置无效。所以我做了如下操作:设置OBJNAME=%%~nxO和lib.exe/NOLOGO!LIBFILE!“/EXTRACT:!OBJFILE!”“/OUT:!OBJNAME!”这会将所有obj放在同一个文件夹和松散的目录结构中,但这对我的使用很好。这可能是最好的解决方案。但除此之外还有另一种方法。lib文件是一个归档文件,可以使用7z或其他归档工具提取该文件。