2

我有一个包含 390 个库的列表,需要将一个软件从实验室 CVI 移植到 Visual C。这些依赖关系让我很生气。

我不能全部导入它们,那将是矫枉过正 - 并且并非所有它们都是唯一的和/或根本可以加载。

有没有一种简单的方法来确定 lib 文件需要什么调用?有这方面的编辑吗?

4

2 回答 2

2

Microsoft 图书管理员程序 LIB.EXE 允许您检查库内容,假设您询问的是静态库。它是 VC++ 发行版的一部分,或者至少曾经是——我不再使用 VC++。这些是可用的选项:

Microsoft (R) Library Manager Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

usage: LIB [options] [files]

   options:

      /CONVERT
      /DEBUGTYPE:CV
      /DEF[:filename]
      /EXPORT:symbol
      /EXTRACT:membername
      /INCLUDE:symbol
      /LIBPATH:dir
      /LINK50COMPAT
      /LIST[:filename]
      /MACHINE:{ALPHA|ARM|IX86|MIPS|MIPS16|MIPSR41XX|PPC|SH3|SH4}
      /NAME:filename
      /NODEFAULTLIB[:library]
      /NOLOGO
      /OUT:filename
      /REMOVE:membername
      /SUBSYSTEM:{NATIVE|WINDOWS|CONSOLE|WINDOWSCE|POSIX}[,#[.##]]
      /VERBOSE
于 2010-12-16T13:50:39.483 回答
2

您可能会考虑做另一件事来减少使用静态库导入的内容量。在 CVI 中,打开与您正在使用的 .lib/.dll 对应的头文件。将此文件保存到不同的name.h.

同样,在编辑器中,编辑该文件以仅包含您要使用的导出函数。 注意: 不要编辑出可能被您打算保留的函数调用的函数。 满意后,您有一个代表您想要的文件,单击新name.h文件中的任意位置(以确保它是活动文件)并使用工作区顶部的菜单选择选项->生成 DLL 导入库...
将出现一个弹出文件选择对话框。使用该对话框,导航到与您要生成.dll的文件相对应的位置。.lib如果成功,name.lib将创建一个仅包含所需导出函数的新函数。

限制导出数量的另一个好处是,它有助于避免在混合不同环境中创建的库时有时会出现COFF不兼容问题。

于 2011-04-22T22:42:05.267 回答