Как вы можете проверить файлы lib?
У меня есть список из 390 библиотек, и мне нужно портировать программное обеспечение из лаборатории CVI в Visual C. Эти зависимости убивают меня.
Я не могу импортировать все из них, это было бы излишним - и не все они уникальны и / или могут быть загружены вообще.
Есть ли простой способ определить, какие вызовы принимает файл lib? Есть ли редакторы для этого?
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
Есть еще одна вещь, которую вы можете рассмотреть, чтобы уменьшить объем контента, который вы импортируете со статической библиотекой. В CVI откройте файл заголовка, соответствующий используемому вами.lib/.dll. Сохраните этот файл под другим именем.h.
Снова в редакторе отредактируйте этот файл, включив в него только те экспортированные функции, которые вы хотели бы использовать. При этом соблюдайте осторожность, чтобы предотвратить редактирование функций, которые могут вызываться функциями, которые вы намерены сохранить. Убедившись, что у вас есть файл, представляющий то, что вам нужно, щелкните в любом месте нового файла с именем.h (чтобы убедиться, что это активный файл) и используйте меню в верхней части рабочей области, чтобы выбрать Параметры-> Создать библиотеку импорта DLL....
Появится диалоговое окно выбора всплывающего файла. Используя это диалоговое окно, перейдите к.dll, соответствующей.lib-файлу, который вы хотите сгенерировать. В случае успеха будет создано новое имя.lib, содержащее только те экспортированные функции, которые вы хотите.
[EDIT] Кроме того, это поможет избежать проблем несовместимости COFF, которые иногда возникают при смешивании библиотек, созданных в разных средах.