2010-03-17 3 views
3

В настоящее время я предоставляю статическую библиотеку, использующую vs2008. Я занимаюсь созданием своей статической библиотеки. Однако, поскольку я использую другую статическую библиотеку, есть способ, которым я устанавливаю это как одну статическую библиотеку. Причина в том, что они будут вызывать функции в моей библиотеке, которые зависят от этой другой статической библиотеки (.lib). Я не уверен, как это сделать и вам нужна помощь.две статические библиотеки

ответ

0

Вот один из способов:

  1. Найти все объектные файлы в статической библиотеке. Это можно сделать, выполнив команду lib STATICLIB /list
  2. Извлечь каждый из перечисленных объектов. Вы должны дать точное название, начиная с шага 1 (lib STATICLIB /extract:.\debug\foo.obj)
  3. Вы можете добавить все объекты, выделенные формы шаг 2 в библиотеку
+0

где вы запускаете эту команду? Командная строка vs2008? и каков будет путь? где фактический проект? – user295030

+0

@ user295030 - yes, lib.exe будет запущен из командной строки. Путь команды зависит от того, где вы установили Visual Studio - проще всего запустить «Командная строка Visual Studio», чтобы настроить вашу среду. –

+0

, и это лучше, чем использование acutal .lib, который я вкладываю в зависимость от своей библиотеки? – user295030

1

Посмотрите объекты проекта | Свойства конфигурации | Библиотекарь | Общие

Поместите имя библиотеки (.lib) файл, который вы хотите добавить в свою библиотеку в разделе «Дополнительные зависимостей»

Вы можете также установить «дополнительные каталоги библиотеки» настройки так, что он может найти библиотека.

+0

, когда я не сделать это и просто сделать билд я вижу ПРЕДУПРЕЖДЕНИЕ LNK4221: нет общественности символы найдены, член архива будет недоступен. за которым следует тонна предупреждений LNK4006 для всех файлов obj в этой библиотеке. ключи? У статического файла библиотеки, который я добавляю, есть тонна файлов obj в нем, и поскольку я предполагаю, что не использую или не ссылаюсь на все те, что содержатся в моем коде, я думаю, возможно, было бы нормально игнорировать эти предупреждения ... и, следовательно, не уверен, как избавиться от этих предупреждений, поскольку мне нравится сохранять очень чистую сборку. – user295030

0

VC++ включает в себя менеджер библиотеки командной строки, который называется lib.exe. Это можно использовать для combine both object files and library files into a single library.

Возможно, это не относится к вашему делу, но в некоторых случаях оно объединяет стороннюю библиотеку и распространяет ее как библиотеку, а не окончательное приложение (или, в случае многих лицензий с открытым исходным кодом, источник), может противоречить условиям лицензии для этой библиотеки. Поэтому примените некоторую осторожность в таких случаях.