Как вы можете проверить файлы 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, которые иногда возникают при смешивании библиотек, созданных в разных средах.

Другие вопросы по тегам