JsonCpp 生成的Lib使用时出现unresolved external symbol
来源:互联网 发布:bp算法 链式求导 编辑:程序博客网 时间:2024/06/05 09:13
针对使用生成的Lib时出现unresolved external symbol未解决的外部链接问题
直接上解决方案:
一、不用lib,直接使用JsonCpp的源文件。把头文件和源文件都塞进你的项目里,就可以用了。就和用你自己敲出来的代码一样。
二、 非要用Lib的话,生成的姿势有个特殊要求,要让项目使用预编译头文件也就是stdafx.h,并且在里面include所有的JsonCpp\Inlude头文件。 原理我也没搞明白,大概是namespace的声明原因?
如果还不行,请确定生成时候选的平台和使用Lib的平台选项一样。并确认不是另外两个JsonCpp Lib常见问题(下面有讲)
熟手自己给项目属性改成使用预编译头文件,然后include一下,其它照常生成就行。
不熟悉的可以完全照着以下步骤来,我自己操作又试了几遍没问题
不要用JsonCpp自带的vs solution,自己用vs开一个win32 console application,type选static library, 预编译头文件precompiled header钩上 ,SDL勾不勾上不知道是否影响,我勾上了。
把JsonCpp的Include文件夹里那些头文件全include进stdafx.h。(至于你是自己拷进项目目录里,然后改一改cpp里面对头文件的引用方式,还是改一下项目的include路径,都行,重点在全都include进stdafx.h)。
把JsonCpp\src\lib_json里的三个cpp文件加进项目。
把那三个cpp文件的最前面都include stdafx.h
设置项目属性 C/C++
-> Code Generation -> Runtime Library 应该和使用Lib的项目属性一样。
还有一个容易被忽视的地方,生成的平台X86还是X64,也应该是一样的。
至于Release和Debug试了试不一样似乎没什么所谓。
以防万一有另外一个毛病,最好再设置项目属性C/C++ -> Output Files -> Assembler Output设为 No Listing。
其它项目属性应该没什么要改的,因为我又按照上面的步骤做一遍,不改其他的,没什么毛病。如果还有毛病的话,可以试试把优化全关了。
然后生成吧。生成的Lib应该可以用了。怎么用Lib就不说了。
想看看我的蠢故事可以继续。。下面有故事和网上另外两个JsonCpp Lib使用问题
之前用JsonCpp,用里面自带的vs solution编译出来的lib使用时总是有
unresolved external symbol 链接错误。好像每次都是
Json::Value的构造函数和什么有毛病。
当时忙着用,干脆不用lib了,直接把头文件和源文件一股脑塞项目里,就可以用了。
现在闲了,准备收拾收拾。
上网查了半天,有许多人遇到这个问题,但是似乎都没解决。
主流的两个对JsonCpp Lib使用问题解决办法也不是针对unresolved
external
symbol链接错误。
附上主流的两个解决方法:
1.
把生成Lib的项目,和使用Lib的项目,属性的C/C++
-> Code Generation -> Runtime Library都设成一样的
这是针对Runtime Library不同问题的解决方法。如果遇到的是这个问题,vs会提示你Lib和当前项目的Runtime Library不一样
我试了试,我的vs会这样报错
error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug'
2.
把生成Lib的项目的属性 C/C++ -> Output Files -> Assembler Output设为 No Listing
针对什么错误没注意,有一篇文章提到了,反正不是 未解决的外部链接问题
我用了这两种方法都没有解决 链接错误。
但是有一篇文章提到了如何编译Lib。http://blog.csdn.net/lzm18064126848/article/details/50517062
这篇文章没有用jsonCpp自带的vs solution,而是用vs 的wizard 创建一个static library项目,然后用了预编译头文件,把所有的json文件夹下的头文件都include进stdafx.h这个预编译头文件。
当时我看见这个还偷笑。。不说jsoncpp有配好的solution。单说把所有头文件都include进stdafx.h就好野路子的感觉。。
结果jsoncpp自带的solution生成的Lib总是有未解决的外部链接错误
我自己用vs 的wizard创建静态库项目,但是不用预编译头文件也不行。。。
后来死马当做活马医,按照那篇文章的试了试,加上了预编译头文件,include所有头文件,生成lib,使用。。成了,没有报错。可以运行。可以正常解析和输出json。。。
我服了。。。不知道什么原理
- JsonCpp 生成的Lib使用时出现unresolved external symbol
- VC6调用VC2005编译生成的lib/dll库出现“unresolved external symbol "__declspec(dllimport) int __cdecl”错误的原因
- MFC/OCX链接Directshow/strmbasd.lib出现的问题unresolved external symbol "class CFactoryTemplate * g_Templates"
- vs2005中使用模板出现"LNK2019 - Unresolved external Symbol" 错误
- error LNK2001: unresolved external symbol ___wargvuafxcwd.lib
- vs2008编译时出现问题解决方法:MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16
- vs2008编译时出现问题解决方法:MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 r
- 出现“unresolved external symbol @__security_check_cookie@4”的解决方法
- 提示出现unresolved external symbol _main的解决方法
- error LNK2019: unresolved external symbol "public 错误的出现原因.
- VS出现unresolved external symbol __imp__func错误的解决办法
- error LNK2019: unresolved external symbol "public 错误的出现原因. .
- 解决fbxsdk链接出现的unresolved external symbol KFbxSurfaceMaterial::ClassId
- 关于模版类编译出现unresolved external symbol的问题
- keil编译中出现UNRESOLVED EXTERNAL SYMBOL的警告
- unresolved external symbol 的解決辦法
- VS 编译时出现 error LNK2019: unresolved external symbol
- OPENGL问题:link时出现error LNK2001: unresolved external symbol ___glutInitWithExit@12的错误提示
- 51nod 1043 幸运号码(dp)
- orcle数据库入门(一)
- Linux内存管理(五)——内核空间管理
- Android studio 启动模拟器报错-Turn off Hyper-V
- 版本更新后js和css没更新
- JsonCpp 生成的Lib使用时出现unresolved external symbol
- List、Set、Map总结!
- 一个lpk.dll病毒的分析报告
- Python 集合
- 『ORACLE』 数据库restricted模式(11g)
- 用MediaInfo 获取 视频文件的信息
- logistic 回归
- 搭建一个redis高可用系统
- PKUSC2017 酱油记(by spark)