Visual C ++“库列表”的含义

时间:2012-03-14 19:21:13

标签: c++ visual-studio visual-c++

我正在尝试从DXC竞赛中编译c ++源代码文件。

说明如下:

在Windows,MS下编译任何C ++示例(或用C ++编写的DA) Visual C ++ 8.0(2005)是必需的。确保添加%DXC_HOME%\ Lib和 %DXC_HOME%\分别包含到您的库和标题搜索路径中,然后添加 dxcApi.lib到您的库列表(如果在debug中编译,则为dxcApid.lib) 模式)。

我将Lib和Include库添加到库和搜索路径中并导入它们。我不明白的是第二步的含义:“将dxcApi.lib添加到您的库列表” - 这是什么意思?

如果没有这一步,我会收到链接器错误,例如:

  

错误1错误LNK2019:未解析的外部符号   “__declspec(dllimport)public:_ thiscall   DXC ::候选集::〜候选集(空)”   ( _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 个答案:

答案 0 :(得分:2)

您需要将特定的lib文件添加到库列表中,以便链接器可以在其中搜索您缺少的符号。

enter image description here

答案 1 :(得分:2)

该任务表示将该特定.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(后跟空格或分号;)。确保为活动项目配置添加正确的库(调试/发布)。