引子 使用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。