Ответ 1
Да, вы можете сделать это, в значительной степени, как и у вас.
C:\Code\bgi\obj>lib /out:libbgi.lib *.obj
LIB (lib.exe) используется для создания статических библиотек. LINK (link.exe/DLL) используется для создания динамических библиотек (он создает DLL и библиотеку импорта .lib).
C:\Code\bgi\obj>link /DLL /out:bgi.dll *.obj [additional libs]
При использовании команды link /DLL
потребуются дополнительные стандартные библиотеки времени исполнения Win32 и С++ (такие как библиотеки MSVCRT.lib и User32.lib и т.д. и библиотеки MFC).
В этом случае; это, по-видимому, правильные аргументы компоновщика;
C:\Code\bgi\obj>link /DLL /out:bgi.dll *.obj MSVCRTD.lib User32.lib Gdi32.lib ole32.lib Comdlg32.lib OleAut32.lib
Примечание. Созданные объектные файлы являются версиями отладки, поэтому MSVCRTD.lib(обратите внимание на D) является тем, который будет использоваться здесь. С приведенными выше командами мне удалось успешно связать как .dll, так и статический .lib.
Дополнительные пути и библиотеки;
При распространении этих выходов для других сборок в целевой сборке может потребоваться дополнительный путь к заголовку и библиотеке. Чтобы добавить дополнительные места в пути поиска и поиска библиотек, переменные среды (INCLUDE
и LIB
) могут быть добавлены (для каждого пользователя или для всей системы), но они также могут быть указаны в командной строке через /I
и /LIBPATH
следующим образом:
cl /IC:\Code\include [additional options] main.cpp
link /LIBPATH:C:\Code\lib [additional options] xyz.lib
Руководство;
- Запустите командную строку "Visual Studio", если в 2008 году должна быть ссылка в меню "Visual Studio 2008 Command Prompt". Этот командный файл установит правильную среду для сборки С++. Убедитесь, что они соответствуют правильной инструментальной цепочке для целей x86 или x64.
- Перейдите в каталог, содержащий файлы объектов.
- Запустите команды (ы), которые у вас есть (как указано выше).
Ваша ошибка LNK1104
Я подозреваю, что у вас есть ошибка, LNK1104, скорее всего, потому что у вашего пользователя нет достаточного разрешения писать файлы в рамках "Программы Файлы". Кроме того, это может быть ошибка с использованием неправильной инструментальной цепочки для вашей цели (x86 против x64).
Как правило, лучше сделать это в своем собственном каталоге; например: "C:\Code\bgi".