2015-10-13 11 views
1

Загрузите pthread-w32-2-9-1-release.zip, разархивируйте его и используйте Prebuild/include lib и dll с помощью VisualStudio2013.Должен ли использоваться как pthreadVC2.lib, так и pthreadVC2.dll в visual studio 2013?

Я установил пустой проект VC++ «helloc» с main.c, а затем написал простой пример с функциями pthread_create pthread_join.

Это мой Configure:

свойства-> C/C++ -> Общие-> Additional Include Директории, добавьте "F: \ pthread_win32 \ включают"

свойства-> Linker-> Общие-> Дополнительная библиотека каталогов, добавить "F: \ pthread_win32 \ Lib \ x86"

свойства-> Linker-> Вход-> Дополнительные зависимости, добавьте "pthreadVC2.lib"

И это успешно строить, но когда я нажимаю «Локальный отладчик Windows», консольный разрыв с ошибкой helloc.exe потому что не может найти pthreadVC2.dll ".

Затем я скопировал pthreadVC2.dll в helloc/Debug /, тот же каталог с helloc.exe, наконец, он работает.

Но я не знаю, почему pthreadVC2.lib и pthreadVC2.dll оба требуются helloc.exe. Обязательно ли использовать lib и dll в VisualStudio?

Если для поддержки helloc.exe достаточно одного из них (pthreadVC2.lib pthreadVC2.dll), как указать, какой из них (dll или lib) я хочу использовать в VisualStudio с помощью helloc.exe?

И я не хочу помещать все pthread libs и dll в «C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC», я хочу знать, как настроить вручную.

+2

См. Также http://stackoverflow.com/questions/3573475/how-does-the-import-library-work-details – Hasturkun

ответ

1

AFAICT, предварительно созданная библиотека - это библиотека импорта библиотеки DLL. (Позволяет вам ссылаться на DLL, поэтому требуется) Если вы хотите связать статически, вам придется перестроить библиотеку самостоятельно. Дополнительную информацию см. В файле README.

+0

Поэтому я думаю, что ДОЛЖНО использовать обе библиотеки lib и dll в одном проекте. Правильно ? – linrongbin

+0

Чтобы использовать DLL, вам нужно либо связать с библиотекой импорта (файл LIB), либо использовать 'LoadLibrary()' и 'GetProcAddress()' во время выполнения, чтобы загрузить DLL и использовать ее экспорт. Вы можете связать статически с библиотекой (и не использовать DLL), если вы сначала создадите ее (что даст вам статическую библиотеку ссылок, также .LIB IIRC) – Hasturkun

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

  • Нет связанных вопросов^_^