внутри одной статической библиотеки может быть объектный код для другой статической библиотеки? - PullRequest
0 голосов
/ 21 октября 2011

У меня есть исходный код C ++ (xyz.cpp) для статической библиотеки libxyz.lib, в этом xyz.cpp я вызываю некоторые функции p, q, r, которые являются частью другой статической библиотеки libabc.lib.

Теперь, когда я компилирую код (xyz.cpp), я хочу, чтобы этот объектный код для libabc.lib был включен внутрь (libxyz.lib)

Возможно ли это? Или я должен отправить оба libxyz.lib и libabc.lib пользователю, который хочет их использовать? Я использую Visual Studio C ++ 2005

Заранее спасибо

1 Ответ

0 голосов
/ 21 октября 2011

AFAIK, вы можете добиться этого, только превратив xyz в DLL, но в этом случае вы все равно отправите xyz.dll + файл xyz.lib + требуемые заголовки. Когда вы создаете статическую библиотеку, другие статические библиотеки не связаны между собой: файл .lib содержит только объектный код функций xyz. Смотри http://msdn.microsoft.com/en-us/library/ms235627(v=vs.80).aspx

При сборке из командной строки вы должны собрать программу в два этапа. Сначала скомпилируйте код с помощью Cl.exe с параметром компилятора / c (cl / c / EHsc MathFuncsLib.cpp). Это создаст объектный файл с именем MathFuncsLib.obj. Для получения дополнительной информации см. / C (Компилировать без ссылок). Во-вторых, свяжите код с помощью диспетчера библиотек Lib.exe (lib MathFuncsLib.obj). Это создаст статическую библиотеку MathFuncsLib.lib. Для получения дополнительной информации о диспетчере библиотек см. Справочник по LIB.

...