Странное поведение при создании проекта с использованием .lib-файла - PullRequest
0 голосов
/ 23 февраля 2012

Я использую Visual Studio 2008. Я пытаюсь использовать библиотеку C ++ в моем исходном коде.После установки библиотеки на моем компьютере у меня есть некоторые включаемые файлы, а также некоторые библиотечные файлы.Кроме того, в папке bin находятся msvcm80.dll, msvcp80.dll и msvcr80.dll.

У меня проблема с привязкой проекта, которую я объяснил ниже.Я искал в Интернете, но не нашел относительного ответа на свой вопрос.

Я выполнил следующие процедуры:

  1. Я использовал программное обеспечение Explorer Lib и обнаружил, что файлы .lib встроены в конфигурацию выпуска.

  2. Я установил решение Visual Studio для работы в режиме выпуска для 32 бит.Я не был уверен, стоит ли мне использовать 32 или 64. (Ниже я объяснил, что происходит, когда я перехожу на платформу x64).

  3. Я добавил библиотечные файлы в зависимости компоновщика и ихпуть в каталогах дополнительных библиотек.

  4. Я включил заголовочный файл в исходный код.

  5. Когда я пытаюсь построить решение, яполучить ошибку «LNK2001: неразрешенный внешний символ» в функции, которую я вызвал в своем исходном коде.Я получаю ту же ошибку, даже если удаляю зависимости библиотеки и удаляю их путь в конфигурации компоновщика.

Мой вопрос заключается в том, почему компоновщик не находит вызываемые функции в моем исходном кодев файлах библиотеки?

Когда я меняю платформу с Win32 на x64, я получаю сообщение об ошибке LNK 2001, но с другой функцией.Разница в том, что компоновщик жалуется на функцию, которую я не вызывал напрямую в моем исходном коде.

Может ли кто-нибудь любезно помочь мне определить причину этой ошибки?Пожалуйста, дайте мне знать, если я не объяснил свою проблему ясно.

Спасибо,

Ахмад

1 Ответ

0 голосов
/ 27 февраля 2013

Вы должны предоставить более подробную информацию, возможно, некоторые (из первых) сообщений об ошибках.

Настройка параметров компоновщика в VS никогда не была легкой задачей. Некоторые моменты, которые вы можете проверить:

  • при использовании библиотек winsock, проверьте, что включено первым и т. Д. (Известный winsock.h vs winsock2.h)

  • Проверьте набор инструментов платформы (в вашем случае это, вероятно, должно быть v80)

  • И последнее, и не в последнюю очередь, если отсутствующие внешние компоненты являются API-интерфейсами Windows, возможно, вам необходимо указать в Linker \ Additional Dependencies такие вещи, как: User32.lib, Shell32.lib, Oleaut32.lib, Advapi32.lib в зависимости от Используемые API.

...