VS2013

关于error LNK20xx的链接错误

假如想象 提交于 2019-12-03 08:50:34
引子 使用VS编译C++程序经常会遇到这种情况:编译已经成功,没有报错;但是链接时报错,类似于:“error LNK2001!@#¥#¥@%#……@#¥%&*&¥%¥@#¥”。网上查到的相关文章和我实际遇到不太一样,在这里总结一下我所遇到的链接错误的解决方式。注:这里不明确指明error LNK的错误代码。 一、没有正确的配置XXX.lib windows编译用到其他的dll库如XXX.dll,不但需要 .h的头文件,而且需要相应的 XXX.lib文件。之前查过说是这个XXX.lib文件是指明了函数的入口地址神马的,但为啥linux下就不需要呢? 回到问题本身,没有正确配置XXX.lib文件有以下几种可能: a)没有在链接的附加依赖项中写入正确的XXX.lib(或者使用#param 在程序中设定); b)搜索库文件的路径上XXX.lib不存在(库文件路径没有设置正确); c)XXX.lib文件有多个版本,而库文件路径上那个版本与你头文件的版本不一致; 二、C++类的函数在头文件中声明了,但是在cpp文件中没有对应的定义。 这种错误比较容易发现。错误中会出现函数名。 三、VS的配置不正确 这个是刚发现,并且昨天折磨了我半个下午。 我们工程的一个solution中包含多个project,而且project之间有依赖关系——某些的project会用到一些基础project生成的lib。

在VS2013中使用boost库遇到的问题及解决

别等时光非礼了梦想. 提交于 2019-11-30 01:45:13
最近的项目需要集成一个使用了boost库的开源库。原本应该是比较简单的工作,因为使用的是VS2013,而boost库是最新下载的1.60.0版本(注:写这篇文章时1.61.0刚好release),结果还是费了一点工夫。现在把它记下来,给自己留个记录备查吧。 经过这么久的发展,boost库其实用起来已经很简单了。首先 下载新版本 的包。在windows下,用zip格式的包是最方便的。然后随便解压到一个目录下,我是解压到了D盘,完成后boost库就放在D:\boost_1_60_0目录下了。 接下来就可以编译boost库了。在命令行下进入D:\boost_1_60_0,运行bootstrap.bat进行配置。配置完成后,显示的提示是运行刚生成的b2.exe即可进行编译。网上一些旧的教程说的是运行bjam.exe,这也是可以的,因为这两个文件其实完全一样,boost可能是为了兼容以前的使用习惯,生成exe后改名复制了一份。 编译的时间较长,但只要之前VS已经正常安装和使用,总会编译完成的。结束后,提示如下: The Boost C++ Libraries were successfully built! The following directory should be added to compiler include paths: D:\boost_1_60_0 The