Visual C++ 技巧:如何合并多个静态库(*.lib)

Visual C++ 技巧:如何合并多个静态库(*.lib)


要发布一个lib库,但是这个库用到了其他几个lib,有没有办法把他们合并成一个呢?

有的!

Microsoft 库管理器实用程序 (LIB.EXE) 可用于将两个库合并为一个。

以下是如何 LIB2.LIB 中 LIB1.LIB 中的内容添加单个 LIB 命令中的一个示例:

方法1:命令行

把要合并的lib库拷贝到lib.exe同级目录下,打开命令行,输入

lib.exe /out:objectlib.lib lib1.lib lib2.lib<回车>

该目录下会生成合并后的lib库object.lib。

lib.exe位于VS安装目录下 ..\Microsoft Visual Studio 8\VC\bin

但默认是不能运行的,缺少几个文件。把\Microsoft Visual Studio 8\Common7\IDE 里面的mspdb80.dll,mspdbcore.dll,mspdbsrv.exe,msobj80.dll
复制到上面的bin文件夹里,就OK了。

关于lib.exe的详细使用方法,请参考MSDN: http://msdn.microsoft.com/en-us/library/7ykb2k5f.aspx

方法2:设置VS工程

步骤如下:

  • 访问项目的属性页对话框。

  • 在静态库项目为活动时,选择“管理员”文件夹。

  • 选择“常规”属性页。

    在“附加依赖项”中输入要合并的库,中间用空格分开;

    在“附加库目录”中输入库所在的目录。

  • 选择“命令行”属性页,可以看到VS自动生成的命令行。

  • Rebuild,直接生成合并好的lib库。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
静态编译7z为.lib库需要使用到7-Zip SDK,以下是具体的步骤: 1. 下载7-Zip SDK并解压缩到任意目录下。 2. 打开Visual Studio,新建一个Win32控制台项目。 3. 在项目属性中配置以下选项: - C/C++ -> 常规 -> 附加包含目录:添加7-Zip SDK的Include目录路径。 - C/C++ -> 代码生成 -> 运行库:选择“多线程调试(/MTd)”或“多线程(/MT)”。 - 链接器 -> 常规 -> 附加库目录:添加7-Zip SDK的Lib目录路径。 - 链接器 -> 输入 -> 附加依赖项:添加7z.dll。 4. 在代码中调用7-Zip SDK提供的函数。 例如,以下代码可以解压缩一个7z文件: ```c++ #include "7z.h" #include "7zAlloc.h" #include "7zBuf.h" #include "7zCrc.h" #include "7zFile.h" #include "7zVersion.h" int main() { CrcGenerateTable(); ISzAlloc allocImp = { SzAlloc, SzFree }; ISzAlloc allocTempImp = { SzAllocTemp, SzFreeTemp }; CLookToRead lookStream; FileInStream archiveStream; SzArExInit(&db); // 打开7z文件 FileInStream_CreateVTable(&archiveStream); LookToRead_CreateVTable(&lookStream, False); archiveStream.file = fopen("test.7z", "rb"); LookToRead_Init(&lookStream); CrcInit(&crc); if (SzArEx_Open(&db, &lookStream.s, &allocImp, &allocTempImp) == SZ_OK) { UInt32 i; size_t blockIndex = 0xFFFFFFFF; /* it can have any value before first call (if outBuffer = 0) */ Byte *outBuffer = 0; /* it must be 0 before first call for each new archive. */ size_t outBufferSize = 0; /* it can have any value before first call (if outBuffer = 0) */ for (i = 0; i < db.NumFiles; i++) { size_t offset = 0; size_t outSizeProcessed = 0; size_t len; int res; // 解压缩文件 res = SzArEx_Extract(&db, &lookStream.s, i, &blockIndex, &outBuffer, &outBufferSize, &offset, &len, &allocImp, &allocTempImp); if (res != SZ_OK) break; // 把解压缩后的文件写入磁盘 FILE *fout = fopen(db.Files[i].name, "wb"); fwrite(outBuffer + offset, 1, len, fout); fclose(fout); } IAlloc_Free(&allocImp, outBuffer); } SzArEx_Free(&db, &allocImp); fclose(archiveStream.file); return 0; } ``` 5. 编译并链接项目,生成静态库文件。 在Visual Studio中,选择“生成 -> 生成解决方案”即可生成静态库文件。生成的.lib文件位于项目目录下的Debug或Release文件夹中。 希望这个步骤能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值