ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Jsoncpp 적용하기 (Visual Studio 2017) 방법1
    Programming/c++ 2021. 9. 14. 12:19
    728x90

    필요한 파일 : jsoncpp.lib, include 폴더 


    jsoncpp.lib파일을 아직 빌드하지 않았다면 https://code-space.tistory.com/entry/Jsoncpp-%EB%B9%8C%EB%93%9C

     

    Jsoncpp 빌드

    visual studio 2017 프로젝트에 Jsosncpp 오픈 소스를 적용하기 위해서 먼저 Jsoncpp를 빌드해야합니다. 방법은 여러가지가 있는데 저는 그중에서 CMake를 이용해서 빌드하려고 합니다. 가장 많이 사용하는

    code-space.tistory.com

    위 과정을 먼저 진행해주세요~


    jsoncpp open source에 있는 include 폴더 jsoncpp.lib 를 사용하여 프로젝트에 적용하겠습니다.

    1. jsoncpp 에 있는 include 폴더와 jsoncpp.lib 파일을 적용하고자 하는 프로젝트에 복사해주세요.

    2. 프로젝트 속성 > c/c++ > 일반 > 추가 포함 디렉터리 

     에 include폴더가 있는 경로를 추가해주세요.

      상대경로, 절대경로 상관없지만 상대경로가 더 안전합니다.

    include 디렉터리 경로 추가

    3. 프로젝트 속성 > 링커 > 일반

    에 jsoncpp.lib가 있는 경로를 추가해주세요.

     


    이렇게 설정을 하고 솔루션 빌드를 누르면!!

    실패가...!! 나옵니다.

    jsoncpp.dll 파일도 프로젝트에 옮겨줘야 합니다! 

    저는 예전에 jsoncpp.dll 없이 사용했던거 같은데.. 다른 방법이였나 봅니다..

    그 방법도 포스팅 해보도록 할께요~


    4. jsoncpp.dll 파일을 적용하고자 하는 프로젝트의 실행파일이 생기는 곳에 추가해줍니다.

    jsoncpp.dll파일은 jsoncpp open source를 사용해서 빌드하였을 때 bin폴더에 생성됩니다!

    jsoncpp.dll 파일 생성
    프로젝트 실행파일이 생성되는 경로에 jsoncpp.dll 추가

                        dll은 응용프로그램이 실행될 때 같이 물고 실행된다!

                        같은 경로에 두기 싫다면 프로젝트에 경로를 설정해주면된다~

     

    dll이 있어서 lib 파일없어도 되는 거 같네요,, 


    jsoncpp github에 올라와있는 예제소스로 테스트 해보겠습니다.

    #include <iostream>
    #include <string>
    #include <memory>
    //#include "..\JsonEX\include\json\json.h"   //속성에서 설정안했다면 이렇게 include해도 됩니다
    #include "json.h"
    //#pragma comment(lib, "jsoncpp.lib")  //jsoncpp.lib가 없다 안보인다 이런식의 메시지가 뜨면 주석 풀어주세요.
    //#pragma warning(disable: 4996)          
    
    
    int main() {
    
    	const std::string rawJson = R"({"Age": 20, "Name": "colin"})";
    	const auto rawJsonLength = static_cast<int>(rawJson.length());
    	constexpr bool shouldUseOldWay = false;
    	JSONCPP_STRING err;
    	Json::Value root;
    
    	if (shouldUseOldWay) {  // 이렇게 사용하는 방식은 예전 방식으로 지금은 지원안하는거 같아요
    		/*
    		Json::Reader reader;
    		reader.parse(rawJson, root); 
    		*/
    
    	}
    	else {  // 이 부분을 참고해서 사용하세요.
    		Json::CharReaderBuilder builder;
    		const std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
    		if (!reader->parse(rawJson.c_str(), rawJson.c_str() + rawJsonLength, &root,
    			&err)) {
    			std::cout << "error" << std::endl;
    			return EXIT_FAILURE;
    		}
    	}
    	const std::string name = root["Name"].asString();
    	const int age = root["Age"].asInt();
    
    	std::cout << name << std::endl;
    	std::cout << age << std::endl;
    	return EXIT_SUCCESS;
    
    	return 0;
    }

    json data가 잘 파싱되어 결과가 나왔습니다.

    728x90

    'Programming > c++' 카테고리의 다른 글

    [c++] unique 함수  (0) 2022.08.01
    [c++] std::accumulate 함수 vector sum  (0) 2022.07.16
    [c++] Visual Studio Code c++ 설정  (0) 2022.06.26
    [c++] isdigit() 함수  (0) 2022.05.28
    Jsoncpp 빌드  (0) 2021.09.13

    댓글

© 2022. code-space ALL RIGHTS RESERVED.