我有一个包含 390 个库的列表,需要将一个软件从实验室 CVI 移植到 Visual C。这些依赖关系让我很生气。
我不能全部导入它们,那将是矫枉过正 - 并且并非所有它们都是唯一的和/或根本可以加载。
有没有一种简单的方法来确定 lib 文件需要什么调用?有这方面的编辑吗?
我有一个包含 390 个库的列表,需要将一个软件从实验室 CVI 移植到 Visual C。这些依赖关系让我很生气。
我不能全部导入它们,那将是矫枉过正 - 并且并非所有它们都是唯一的和/或根本可以加载。
有没有一种简单的方法来确定 lib 文件需要什么调用?有这方面的编辑吗?
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
您可能会考虑做另一件事来减少使用静态库导入的内容量。在 CVI 中,打开与您正在使用的 .lib/.dll 对应的头文件。将此文件保存到不同的name.h
.
同样,在编辑器中,编辑该文件以仅包含您要使用的导出函数。 注意: 不要编辑出可能被您打算保留的函数调用的函数。 满意后,您有一个代表您想要的文件,单击新name.h
文件中的任意位置(以确保它是活动文件)并使用工作区顶部的菜单选择选项->生成 DLL 导入库...
将出现一个弹出文件选择对话框。使用该对话框,导航到与您要生成.dll
的文件相对应的位置。.lib
如果成功,name.lib
将创建一个仅包含所需导出函数的新函数。
限制导出数量的另一个好处是,它有助于避免在混合不同环境中创建的库时有时会出现COFF不兼容问题。