#c #dll #linker
#c #dll #компоновщик
Вопрос:
Я хочу создать .dll (на C ), который использует RAPI. Для этого я создаю проект visual Studio, а затем устанавливаю дополнительные включаемые каталоги в то место, где у меня есть необходимый «rapi2.h», а также дополнительные каталоги ссылок на место, где находится rapi.lib.
Затем я пишу другое приложение, используя мое созданное.dll-файл. Этот метод работает нормально, но во время выполнения мне нужно rapi.dll должна существовать на компьютере, на котором запущено мое приложение.
Есть ли какой-либо способ добавить .dll в другой .библиотеки DLL, первая из которых не нужна во время выполнения?
Возможно, это вопрос для начинающих, но почему мне нужна dll во время выполнения, но при компиляции достаточно только .lib и .h, связанных?
Комментарии:
1.
lib
Не подразумевает статическую ссылку — ее можно использовать как для статических, так и для динамических ссылок. Это просто для разрешения ссылок.
Ответ №1:
Вам нужно понимать разницу между динамическим связыванием и статическим связыванием. В вашем случае библиотека является только библиотекой импорта и не содержит фактического исполняемого кода. Это динамически связано во время выполнения.
Комментарии:
1. Я прочитал статью. теперь все более понятно. И как я могу выполнить статическое связывание, предпочтительно используя Visual Studio?
2. Вы можете статически связать, только если предоставлена статическая библиотека. Например, если бы существовала библиотека импорта rapi.lib и статическая библиотека rapi.lib (которая содержала код, найденный в rapi.dll ). Обычно это не делается в Windows. Если вызываемый вами код находится в rapi.dll только тогда у вас нет выбора, кроме как использовать это . dll, если только вам не пришлось переписывать все экспортированные функции самостоятельно.
3. Теперь все понятно, даже разница между библиотекой импорта и статической библиотекой. Большое спасибо!