从lib中提取所有obj文件

时间:2014-12-31 22:20:37

标签: visual-c++ visual-studio-2013

如何从.lib文件中提取所有.obj文件?我发现的唯一方法是一次提取一个。有没有办法实现自动化?

LIB.EXE /EXTRACT:member.obj Library.LIB 

2 个答案:

答案 0 :(得分:4)

这是我最终以extract.bat mylib.libextract.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

答案 1 :(得分:-1)

您可以编写一个简短的程序,使用system(...) - 函数来执行调用。

但是,这仍然会让您产生生成成员对象文件列表的问题。