Я добавил в Visual Studio Project-> Properties-> Linker-> Input-> Additional Dependencies файл x.lib
. Моя сборка была успешной, но программа не запускалась, потому что после ее запуска она зависала: The program cant start because of x.dll is missing from your computer.
Почему он ищет x.dll
, а не x.lib
?Связывание библиотеки lib в C с помощью Visual Studio 2013
0
A
ответ
0
Для динамического связывания:
x.lib
используется для компиляции, которая содержит информацию, связывающую библиотечных функций в. При компиляции компилятор просто проверяет, существуют ли эти функции. Чтобы понять это просто, компиляция даст возможность найти эти функции в файлах dll
.
В то время как x.dll
- это динамическая библиотека ссылок, которая содержит реализаций (возможно, не настолько точных) этих функций. Если вы не установили dll
вправо, программа не сможет выполнить соответствующие функции. dll
- фактически исполняемый файл, а не lib
.
Но ваш 'x.lib' является прокладкой для' x.dll', поскольку вы пропустите открытие библиотеки и получите указатель каждой функции и вызовите эту функцию, 'x.lib' - это статическая библиотека связанный с вашей программой – dvhh
@dvhh Я думаю, что существует два типа 'lib'. Один вид содержит информацию о файле 'dll' и запись в функции api, другой тип содержит сам код функции и добавляет код в программу непосредственно при компиляции (например, вы сказали, статическая библиотека ссылок). – Daniel
Я отвечал на @ Мартин Бее, который был, вероятно, тем, кто голосовал за вас (к сожалению, он удалил свой комментарий, но, по-видимому, оставил без голосования) – dvhh