2012-02-23 6 views
0

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

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

я сделал следующие процедуры:

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

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

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

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

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

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

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

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

Спасибо,

Ahmad

+0

Возможно, это библиотека C, поэтому вам нужно написать #include в extern «C» {} Это просто гадание, обратитесь за помощью к владельцу библиотеки. –

+0

Это библиотека C++. Я был бы признателен за ваши мысли. – AFP

ответ

0

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

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

  • при использовании библиотеки Winsock, проверьте, который входит в первую и т.д. (известный winsock.h против winsock2.h)

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

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

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

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