Компиляция библиотеки C ++ как статической библиотеки, так и динамической библиотеки DLL с VS - PullRequest
3 голосов
/ 07 сентября 2011

Мне нужно скомпилировать существующую библиотеку C ++ как в виде библиотеки, так и библиотеки DLL, а затем использовать статические и динамические библиотеки в различных приложениях. Я использую VS2010.

Что я не могу сделать, так это отредактировать все файлы заголовков, чтобы добавить инструкции __declspec (dllexport) для экспорта, поскольку библиотека должна сохраняться как есть.

Под Mac я смог без проблем скомпилировать и использовать dylib, но я знаю, что VS не хватает в этом отношении.

В VS возможно ли сначала скомпилировать статическую библиотеку, а затем dll, чтобы «экспортировать» функции (т. Е. Связать их с приложением во время компиляции)? Другими словами, могу ли я использовать статическую библиотеку, как если бы экспортная библиотека была сгенерирована с помощью __declspec (dllexport)? Есть ли лучшие обходные пути?

1 Ответ

2 голосов
/ 07 сентября 2011

Мне нужно скомпилировать существующую библиотеку C ++ как в виде lib, так и в dll, и затем используйте статические и динамические библиотеки в разных приложениях. я использовать VS2010.

Создание конфигурации для этого. Например, Release LIB, Release DLL и т. Д.

Что я не могу сделать, это отредактировать все файлы заголовков, чтобы добавить __declspec (dllexport) инструкции по экспорту, так как библиотека должна быть хранится как есть.

Просто добавьте файл определения модуля (* .def) со списком экспортируемых функций.

Другими словами, могу ли я использовать статическую библиотеку, как если бы она была экспортной библиотекой? генерируется с помощью __declspec (dllexport)?

Нет, эти либы разные. Когда вы создаете DLL, вы получаете двоичные файлы и файлы lib.

...