2015-12-21 3 views
1

Я создал VTK на своем компьютере с файлами dll и .lib. Когда я хочу создать проект, который использует VTK, я должен включать файлы заголовков и ссылки .lib-файлов в свойствах проекта. Кроме того, я должен добавить файлы .dll в путь к проекту. У меня есть несколько вопросов по этому вопросу,Static lib vs DLL в визуальной студии

  1. В чем разница между .libs и DLL-файлами?
  2. Возможно ли создать проект с использованием только DLL-файлов или .lib-файлов. (Я могу связать .lib-файлы, а не добавлять DLL-файлы в путь или добавить DLL-файлы в путь и не связывать файлы .lib)?

Я был бы признателен за любые объяснения. Благодарю.

+1

Вы создали проект VTK как DLL. DLL содержит исполняемый код (и данные), а LIB только содержит исправления адресов для экспорта из DLL. Без LIB вам нужно будет вручную загрузить DLL и исправить свои вызовы вручную. –

+1

Связано: http://stackoverflow.com/a/7096229/214671 –

ответ

3
  1. .lib-файлы используются компоновщиком для разрешения импортных товаров. .dll содержат код, который динамически загружается во время выполнения.

  2. Если у вас есть статическая библиотека, она содержит весь необходимый код и не будет .dll. Если у вас есть .dll, вам также нужен компаньон .lib для правильной компоновки.

+0

Если я могу использовать .lib-файлы без DLL-файлов, почему проект генерирует сообщение «vtkxxxx.dll отсутствует на вашем компьютере», когда я не включаю это на пути? У меня есть как vtkxxxx.dll, так и vtkxxxx.lib. Как изменить параметры проекта, чтобы включить только файлы .lib? – Madz

+0

Вы должны создать его как статическую библиотеку, где весь код находится в .lib. Таким образом, все будет связано с вашим .exe, и тогда вам понадобится только этот файл. –

+0

Я вижу. Так что если текущим .libs нужны DLL, то они не могут функционировать как статическая библиотека. Итак, мне нужно воссоздать файлы lib, если я не хочу добавлять DLL в путь к проекту? – Madz

1

. Файлы .lib используются только во время компиляции. В то время как DLL-файлы используются скомпилированным exe во время выполнения. Другими словами, после того, как вы скомпилировали программу, вам больше не нужны файлы .lib. При упаковке вашего программного обеспечения для распространения вам понадобятся только ваши .exe, .dll и любые ресурсы, которые не были упакованы в ваш exe.

Смежные вопросы