Visual C ++ «Список библиотек» означает - PullRequest
1 голос
/ 14 марта 2012

Я пытаюсь скомпилировать файл исходного кода c ++ из конкурса DXC.

Инструкции:

Для компиляции любого из примеров C ++ (или DA, написанного на C ++) под Windows, MS Требуется Visual C ++ 8.0 (2005). Убедитесь, что вы добавили% DXC_HOME% \ Lib и % DXC_HOME% \ Включить в вашу библиотеку и пути поиска заголовка соответственно и добавить dxcApi.lib в ваш список библиотек (или dxcApid.lib, если компилируется в отладке Режим).

Я добавил библиотеки Lib и Include в библиотеку и пути поиска и импортировал их. Что я не понял, так это смысл второго шага: « добавить dxcApi.lib в список библиотек » - что это значит?

Без этого шага я получаю ошибки компоновщика, такие как:

Ошибка 1, ошибка LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: _ thiscall DXC :: CandidateSet :: ~ CandidateSet (аннулируются)» ( _imp _ ?? 1CandidateSet @ Dxc @@ QAE @ XZ) ссылка на функцию "public: void __thiscall ExampleDA :: sendDiagnosis (void) " (? sendDiagnosis @ ExampleDA @@ QAEXXZ) D: \ Dropbox \ Work \ Visual Studio 2010 \ Projects \ DXC11 \ DXC11 \ ExampleDA.obj DXC11

Я застрял с этой проблемой довольно долго, и я отчаянно нуждаюсь в помощи! Большое спасибо

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

Задача говорит добавить конкретный .lib в список библиотек , которые связаны с вашим кодом .Не говоря уже о том, что эта библиотека должна быть связана, реализация для функций, определенных в ее заголовках, недоступна для компоновщика, и вы получите этот неразрешенный внешний символ.

В VS вы можете добавить что-то в список связанных библиотеклибо через #pragma comment, либо в настройках проекта:

// at the top of main.cpp, preferrably
#pragma comment(lib, "the_lib_name.lib") // .lib optional

Вы можете иметь разные библиотеки для отладки и выпуска, просто окружив #pragma comment в блоке #if:

#ifdef NDEBUG // release
#pragma comment(lib, "the_lib_name.lib")
#else // debug
#pragma comment(lib, "the_lib_named.lib") // most debug libraries end with a 'd'
#endif

А для настроек проекта вы можете сделать это с помощью

[Project] -> <Project Name> Properties (or Alt-F7) -> Configuration Properties
    -> Linker -> Input -> Additional Dependencies

Просто добавьте the_lib_name.lib спереди (за которым следует пробел или точка с запятой ;).Убедитесь, что вы добавили правильную библиотеку для активной конфигурации проекта (отладка / выпуск).

2 голосов
/ 14 марта 2012

Вам необходимо добавить конкретный файл lib в список библиотек, чтобы компоновщик мог найти в нем символы, которые вам не хватает.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...