Bwar / CJsonObject

Ultralightweight JSON parser in C++ based on cJSON
MIT License
648 stars 239 forks source link

无法解析的外部符号 #52

Closed chccc1994 closed 2 years ago

chccc1994 commented 2 years ago

软件 :QT 5.14 VS2019 CMake 3.16 C++11 前提: vs2019 新建空项目,添加cJSON.h cJSON.c CJsonObject.hpp CJsonObject.cpp到空项目,debug release demo编译运行正常; 问题: QT创建项目,CMake配置添加cJSON.h cJSON.c CJsonObject.hpp CJsonObject.cpp到项目中 ,vs2019打开该项目,debug release模式编译 : 无法解析的外部符号;

set(ProjectName mainwindow)
project(${ProjectName} LANGUAGES CXX)
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
set (CMAKE_CXX_STANDARD 11)

#添加预编译宏
ADD_DEFINITIONS(-DTORRENT_LIBRARY)
ADD_DEFINITIONS(-DNO_FREETYPE)
ADD_DEFINITIONS(-DUNICODE -D_UNICODE)
ADD_DEFINITIONS(-DHCPP_LEGACY_API)

#设置自动生成moc文件,一定要设置
set(CMAKE_AUTOMOC ON) # For meta object compiler
set(CMAKE_AUTORCC ON) # Resource files
set(CMAKE_AUTOUIC ON) # UI files

#指定Qt路径和启用当前目录(按需设置)
#set(CMAKE_PREFIX_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake")
list(APPEND CMAKE_PREFIX_PATH "C:/Qt/Qt5.14.2/5.14.2/msvc2017_64/lib/cmake")
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# 引入Qt库
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Core REQUIRED)
find_package(Qt5Network REQUIRED)
find_package(Qt5Concurrent REQUIRED)

Set(Project_Headers ${PROJECT_SOURCE_DIR}/mainwindow.h
                    ${PROJECT_SOURCE_DIR}/cJSON.h 
                    ${PROJECT_SOURCE_DIR}/CJsonObject.hpp)

Set(Project_Sources ${PROJECT_SOURCE_DIR}/main.cpp
                    ${PROJECT_SOURCE_DIR}/mainwindow.cpp
                    ${PROJECT_SOURCE_DIR}/cJSON.c
                    ${PROJECT_SOURCE_DIR}/CJsonObject.cpp)

Set(Project_Sources ${Project_Sources})
Set(Project_Headers ${Project_Headers})
Set(Project_UIs ${PROJECT_SOURCE_DIR}/${ProjectName}.ui)

#创建工程文件
add_executable(${PROJECT_NAME} ${Project_Sources} ${Project_Headers} ${Project_UIs})
#添加依赖项
target_link_libraries(${PROJECT_NAME}  Qt5::Widgets Qt5::Network)
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_Parse,该符号在函数 "public: bool __cdecl neb::CJsonObject::Parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?Parse@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_Print,该符号在函数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl neb::CJsonObject::ToFormattedString(void)const " (?ToFormattedString@CJsonObject@neb@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_PrintUnformatted,该符号在函数 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl neb::CJsonObject::ToString(void)const " (?ToString@CJsonObject@neb@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_Delete,该符号在函数 "public: void __cdecl neb::CJsonObject::Clear(void)" (?Clear@CJsonObject@neb@@QEAAXXZ) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_GetArraySize,该符号在函数 "public: int __cdecl neb::CJsonObject::GetArraySize(void)" (?GetArraySize@CJsonObject@neb@@QEAAHXZ) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_GetArrayItem,该符号在函数 "public: class neb::CJsonObject & __cdecl neb::CJsonObject::operator[](unsigned int)" (??ACJsonObject@neb@@QEAAAEAV01@I@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_GetObjectItem,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddEmptySubObject(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?AddEmptySubObject@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateNull,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddNull(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?AddNull@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateBool,该符号在函数 "public: bool __cdecl neb::CJsonObject::Add(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,bool,bool)" (?Add@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N1@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateDouble,该符号在函数 "public: bool __cdecl neb::CJsonObject::Add(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,float)" (?Add@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@M@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateInt,该符号在函数 "public: bool __cdecl neb::CJsonObject::Add(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?Add@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateString,该符号在函数 "public: bool __cdecl neb::CJsonObject::Add(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?Add@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateArray,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddEmptySubArray(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?AddEmptySubArray@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_CreateObject,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddEmptySubObject(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?AddEmptySubObject@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_AddItemToArray,该符号在函数 "public: bool __cdecl neb::CJsonObject::Add(class neb::CJsonObject const &)" (?Add@CJsonObject@neb@@QEAA_NAEBV12@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_AddItemToArrayHead,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddAsFirst(class neb::CJsonObject const &)" (?AddAsFirst@CJsonObject@neb@@QEAA_NAEBV12@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_AddItemToObject,该符号在函数 "public: bool __cdecl neb::CJsonObject::AddEmptySubObject(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?AddEmptySubObject@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_DeleteItemFromArray,该符号在函数 "public: bool __cdecl neb::CJsonObject::Delete(int)" (?Delete@CJsonObject@neb@@QEAA_NH@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_DeleteItemFromObject,该符号在函数 "public: bool __cdecl neb::CJsonObject::Delete(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?Delete@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_ReplaceItemInArray,该符号在函数 "public: bool __cdecl neb::CJsonObject::Replace(int,class neb::CJsonObject const &)" (?Replace@CJsonObject@neb@@QEAA_NHAEBV12@@Z) 中被引用
1>CJsonObject.obj : error LNK2019: 无法解析的外部符号 cJSON_ReplaceItemInObject,该符号在函数 "public: bool __cdecl neb::CJsonObject::Replace(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class neb::CJsonObject const &)" (?Replace@CJsonObject@neb@@QEAA_NAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV12@@Z) 中被引用
1>D:\workSpace\Qt\untitled\build\Debug\mainwindow.exe : fatal error LNK1120: 21 个无法解析的外部命令
chccc1994 commented 2 years ago

已解决,必须从项目中添加,否则会报无法解析的外部符号错误。目前不清楚什么原因造成的。