При компиляции DLL-проекта вы будете получать DLL и LIB-файл в качестве вывода. DLL содержит фактический код библиотеки; файл LIB содержит заглушки для экспортированных функций, которые помогают компоновщику в выпуске кода вызвать эту DLL.
Это очень отличается от LIB-файла, который вы получаете при компиляции статической библиотеки. Это LIB-файл содержит весь объектный код, который содержит библиотеку. Весь такой код напрямую связан с вашим исполняемым файлом, когда вы его создаете, следовательно, является «статической» частью имени.
Однако фактический способ использования очень похож. Независимо от того, связываетесь ли вы с динамической или статической библиотекой, вы указываете компоновщик (используя «Дополнительные зависимости») в файле LIB. Компилятор делает все остальное; он может указать из файла LIB, что он должен делать.
Конечно, вы должны убедиться, что это правильный файл LIB. Наличие обоих проектов (DLL и EXE) в одном решении позволит вам использовать ссылки на проекты, что делает задачу практически безупречной.
EDIT: Вы, разумеется, не получите файл LIB при сборке DLL, если не экспортирует DLL-функции. (Если он не экспортирует какие-либо функции, для клиента этой DLL нет ничего, поэтому нет причин для LIB-файла!) Самый простой способ организовать функции, которые будут экспортироваться из DLL, - использовать аннотацию __declspec(dllexport)
, В сочетании с макросом вы можете договориться о том, чтобы он разрешил __declspec(dllimport)
со стороны потребителя, что позволяет использовать один и тот же заголовочный файл для построения библиотеки DLL и ее использования из приложения. Больше информации об этом в моем ответе here. Кроме того, вы можете использовать a DEF file with an "EXPORTS" section.
Проект DLL создает библиотеку * import *. Не то же самое, что и статическая библиотека, она очень мала и объявляет только те функции, которые вы экспортировали. Если вы не получите файл .lib, вы не построили его правильно или не забыли экспортировать функции. –
DLL-проект создает только DLL-файл. Я не могу найти никаких .lib-файлов. – Stark