场景:用Jsoncpp源码编译生成的库(lib),与程序一起使用时,vs输出错误提示Error LNK2038;
A1:原因:需要使用的是静态库,而实际的库是动态库。
解决:将动态库编译为静态库,重新编译解决方案
A2: 原因很简单:在使用命令行编译的时候,我的makefile里面的命令没有指定/MD或者/MT选项(所以其默认选了/MT),
但是VS2013里面的默认选项是/MD,所以造成了不匹配。
解决办法:项目>属性>C/C++>代码生成>运行库>选择"/MT"即可
(重点是,在生成库与生成应用程序时,两者的"运行库" 选项选择要一致)