2016-08-19 2 views
0

Я добавил в 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

Для динамического связывания:

x.lib используется для компиляции, которая содержит информацию, связывающую библиотечных функций в. При компиляции компилятор просто проверяет, существуют ли эти функции. Чтобы понять это просто, компиляция даст возможность найти эти функции в файлах dll.
В то время как x.dll - это динамическая библиотека ссылок, которая содержит реализаций (возможно, не настолько точных) этих функций. Если вы не установили dll вправо, программа не сможет выполнить соответствующие функции. dll - фактически исполняемый файл, а не lib.

+0

Но ваш 'x.lib' является прокладкой для' x.dll', поскольку вы пропустите открытие библиотеки и получите указатель каждой функции и вызовите эту функцию, 'x.lib' - это статическая библиотека связанный с вашей программой – dvhh

+0

@dvhh Я думаю, что существует два типа 'lib'. Один вид содержит информацию о файле 'dll' и запись в функции api, другой тип содержит сам код функции и добавляет код в программу непосредственно при компиляции (например, вы сказали, статическая библиотека ссылок). – Daniel

+0

Я отвечал на @ Мартин Бее, который был, вероятно, тем, кто голосовал за вас (к сожалению, он удалил свой комментарий, но, по-видимому, оставил без голосования) – dvhh