반응형

[VS] DLL_Export_Import.docx
1.30MB

 

 

[목차]

1. DLL Export 프로젝트 생성
1.1. Visual C++ 프로젝트 생성
1.2. 코드 작성
1.3. 빌드 및 생성 파일 확인
2. DLL Import 프로젝트 생성
2.1. Visual C++ 프로젝트 생성
2.2. 코드 작성
2.3. 환경설정 및 빌드

반응형
반응형

1. 시험환경

    · 윈도우

    · C++

    · boost

 

2. 목적

    · C++ Boost 라이브러리를 이용하여 json 파일을 읽어서 파싱(parsing)하는 예제 코드를 작성한다.

 

3. 적용

    ① json 샘플 데이터

        - 파일명 : Config.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
  "encoding":"UTF-8",  
  "config_type":"dev",
 
  "port":8899,
 
  "log":
  { 
    "max_size":1024,
    "write_file":true,
    "print_screen":true    
  },
 
  "database":
  [
    { 
      "desc":"no.1",
      "address":"127.0.0.1",
      "port":4443,
      "instance":"test_instance1",
      "id":"sa",
      "password":"asdf1234$"
    },
    { 
      "desc":"no.2",
      "address":"127.0.0.1",
      "port":5443,
      "instance":"test_instance2",
      "id":"sa",
      "password":"asdf1234$"
    }
  ]
}
cs

 

 

    ② json 형식의 데이터를 파싱하는 코드이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
 
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
 
#include <boost/foreach.hpp>
 
 
int main()
{
    try
    {
        using boost::property_tree::ptree;
        using std::string;
 
        ptree props;
        boost::property_tree::read_json("Config.json", props);
 
 
        string encoding = props.get<string>("encoding");
        std::cout << "Encoding=" << encoding << std::endl;
 
        string config_type = props.get<string>("config_type");
        std::cout << "config_type=" << config_type << std::endl;
 
 
        unsigned short port = props.get<unsigned short>("port");
        std::cout << "port=" << port << std::endl;
 
 
        std::cout << "[Log]" << std::endl;
        ptree &log_child = props.get_child("log");
        int size = log_child.get<int>("max_size"); 
        std::cout << "size=" << size << std::endl;
 
 
        bool write_file = log_child.get<bool>("write_file"); 
        std::cout << "write_file=" << std::boolalpha << write_file << std::endl;
 
        std::cout.setf(std::ios::boolalpha);
        bool print_screen = log_child.get<bool>("print_screen"); 
        std::cout << "print_screen=" << print_screen << std::endl;
 
 
 
        std::cout << "[Database]" << std::endl;
        ptree &db_child = props.get_child("database");
 
        // array!
        int idx = 0;
        BOOST_FOREACH(ptree::value_type &vt, db_child)
        {
            string desc = vt.second.get<string>("desc");
            string address = vt.second.get<string>("address");
            unsigned short port = vt.second.get<unsigned short>("port");
            string instance = vt.second.get<string>("instance");
            string id = vt.second.get<string>("id");
            string password = vt.second.get<string>("password");
 
            std::cout << idx++ << " " << desc << " " << address << " " << port << " " << instance << " " << id << " " << password << std::endl;
        }
 
    }
    catch (std::exception& e)
    {
        std::cout << e.what(); 
    }
 
    return 0;
}
 
cs

 

반응형
반응형

1. 시험환경

    ˙ JDK
    ˙ Visual Studio Code

 

2. 목적

    ˙ Visual Studio Code를 이용하여 Spring Boot 프로젝트 개발을 위한 프로젝트 환경을 구축한다.

    ˙ 리눅스

 

3. 적용

    ① Visual Studio Code를 다운 받아 설치한다.

        - URL : https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

Visual Studio Code 사이트

 

    ② 공식 가이드에 Spring Boot를 시작하기 위한 사전 설치 프로그램과 VSCode 확장팩에 관한 정보를 확인한다.

사전 설치 프로그램 및 VSCode 확장팩

 

    ③ 사전 필수 프로그램을 설치한다.

        - JDK(JAVA Development Kit) 설치 : https://languagestory.tistory.com/11

 

윈도우 환경에서 JDK(JAVA Development Kit) 설치

1. 시험환경 ˙ 윈도우 ˙ JDK 17 Win x64 2. 목적 ˙ 윈도우 환경에서 JDK를 설치한다. ˙ 설치한 JDK 환경을 설정한다. 3. 적용 ① 오라클 다운로드 센터에서 JDK for Developers를 클릭한다. - URL : https://www.oracl

languagestory.tistory.com

 

        - Apache Maven 설치 (옵션) : https://languagestory.tistory.com/69

 

Apache Maven 설치

1. 시험환경 - 윈도우 10 2. 목적 - 윈도우 운영체제에 Apache Maven을 설치한다. 3. 적용 ① Apache Maven 사이트로 이동한다. - https://maven.apache.org/ Maven – Welcome to Apache Maven Welcome to Apache Maven Apache Maven is a

languagestory.tistory.com

 

    ④ VSCode 확장팩을 설치한다.

        - Java Extension Pack
        - Spring Boot Tools
        - Spring Initializr
        - Spring Boot Dashboard

Java Extension Pack 설치
Spring Boot Tools 설치
Spring Initializr Java Support 설치
Spring Boot Dashboard 설치

 

반응형
반응형

1. 시험환경

    ˙ 윈도우 10

    ˙ Visual Studio 2015 Community (x32)

 

2. 목적

    ˙ Visual Studio에서 C Style로 DLL(Dynamic Link Library) 를 생성한다.

    ˙ 생성한 DLL을 Import하고 사용하는 방법을 확인한다.

 

3. 적용

    ① DLL(Dynamic Link Library)을 만들기 위한 프로젝트를 생성한다.

        - Project : Win32 Consol Application

        - Name : dllExportExample

 

    ② Application Setting을 설정한다.

        - Application type: DLL

        - Additional options: Empty project

 

    ③ header 파일을 생성하여 DLL Export 함수를 선언한다.

        - 파일명 : dllExport.h

1
2
3
4
5
6
7
8
#pragma once
#include <stdio.h>
 
#define DLLEXPORT extern "C" __declspec(dllexport)
 
DLLEXPORT void exampleFunc();
DLLEXPORT void exampleFuncParam(int num1, int num2);
 
cs

 

    ④ header 파일에서 선언한 DLL Export 함수 동작을 정의한다.

        - 파일명 : dllExport.cpp

1
2
3
4
5
6
7
8
9
#include "dllExport.h"
 
DLLEXPORT void exampleFunc() {
    printf("exampleFunc()\n");
}
 
DLLEXPORT void exampleFuncParam(int num1, int num2) {
    printf("%d + %d = %d\n", num1, num2, num1 + num2);
}
cs

 

 

    ⑤ 프로젝트를 컴파일 성공 후 생성 파일을 확인한다.

        - 컴파일 단축키 : <Ctrl> + <F7>

        - 생성파일 : [프로젝트명].lib, [프로젝트명].dll 등

컴파일 성공

 

DLL 파일 생성


    ⑥ 생성된 DLL을 Import 및 사용하기 위한 프로젝트를 생성한다.

        - Project : Win32 Consol Application

        - Name : dllImportExample

 

    ⑦ Application Setting을 설정한다.

        - Application type: consol application

        - Additional options: Empty project

 

    ⑧ DLL Export 프로젝트에서 생성한 Header 파일을 포함(include) 시킨다.

        - 파일명 : dllImport.cpp

        - 포함시킨 "사용자 header 파일"의 경로를 지정하지 않았으므로, 코드 입력화면에서 에러 표시가 나타남을 주의한다.

        - 포함시킨 "사용자 header 파일"의 경로를 프로젝트 설정에서 추가한다.

 

    ⑨ Export 프로젝트에서 생성된 LIB 경로 및 파일명을 프로젝트 설정에 추가한다.

        - Linker → General → Additional Library Directories : LIB 경로 입력

        - Linker → Input → Additional Dependencies : LIB 파일명 입력

의존성 LIB 경로 입력

 

의존성 LIB 파일명 입력

 

    ⑩ Export 프로젝트에서 생성된 DLL 파일을 사용하고자하는 프로젝트에 복사한다.

 

4. 결과

    ˙ 컴파일 및 실행결과를 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ Visual Studio 2022

    ˙ C언어

 

2. 목적

    ˙ C에서 문자열 처리 함수 strtok() 사용법을 알아보자.

    ˙ 특정 문자열을 공백(" ")을 기준으로 잘라내어 출력한다.

 

3. 적용

    ① strtok() 함수를 이용하면 "대상 문자열"을 사용자가 원하는 "문자(열)"로 잘라낼 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>                                // strtok 함수가 선언된 헤더 파일
 
int strtokExample()
{
    int th = 3;
    int idx = 0;
 
    char s1[64= "little little twinkle star";    // sample string
 
    char* ptr = strtok(s1, " ");                   // 공백(" ")을 기준으로 문자열 자름
 
    while (ptr != NULL)                            // 문자열을 끝까지 자를때까지 반복
    {
        if (idx == th)
        {
            printf("%s\n", ptr);                   // 잘린 문자열 출력
            return 0;
        }
 
        ptr = strtok(NULL" ");                   // 잘린 다음 문자열 위치를 포인터로 반환
        idx++;
    }
 
    return 0;
}
cs

 

4. 결과

    ˙ th=3인 경우, 

 

    ˙ th=2인 경우,

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ 윈도우

    ˙ Visual Studio Community 2022 (C++ 콘솔 앱)

 

2. 목적

    ˙ 윈도우 환경에서 Visual Studio를 설치한다.

    ˙ Visual C++ 프로젝트를 생성하고 실행한다.

 

3. 적용

    ① Visual Studio 다운로드 사이트에 접속하여 개인 사용자가 무료로 사용할 수 있는 Community 버전을 선택한다.

 

    ② Visual Studio Installer를 설치하는 파일이 Download되면 실행한다.

 

    ③ Visual Studio Installer가 Download 되고 설치된다.

        - 설치되고 있는 "Visual Studio Installer"는 "Visual Studio" 그 자체가 아니라,

           Visual Studio를 설치할 수 있는 "설치 관리자 프로그램"이다.

 

    ④  Visual Studio Installer가 설치되었다.

        - 설치경로 : C:\Program Files (x86)\Microsoft Visual Studio\Installer

 

 


 

    ⑤ Installer를 실행하여 설치하고자 하는 구성요소를 선택하고, 본격적으로 "Visual Studio"를 설치한다.

        - 나는 주로 C++과 C# 코딩을 목적으로 Visual Studio를 사용한다.

        - 사용자의 목적에 맞는 항목을 선택하고 설치한다.

 

    ⑥ Visual Studio가 설치된다.

 

    ⑦ Visual Studio가 설치되었다.

        - 설치경로 : C:\Program Files\Microsoft Visual Studio\2022\Community

 


 

    ⑥ 설치가 완료되면 "Visual Studio" 프로그램을 실행하고,  "새 프로젝트 만들기" 버튼을 클릭한다.

 

    ⑦ "C++ 콘솔 앱" 신규 프로젝트를 생성한다.

 

    ⑧ 프로젝트 폴더 및 이름을 설정한다.

 

    ⑨ 프로젝트가 구성되었다.

 

4. 결과

    ˙ <Ctrl> + <F5> 단축키를 이용하여 컴파일 Success 및 실행 확인한다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2017 v141 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2012 v110 (x64, Release) 간 연동

    ˙ Maria DB 10.5.8 (x64) 와 Visual Studio 2010 v100 (x64, Release) 간 연동
    ˙ Maria DB 10.5.8 (x32) 와 Visual Studio 2010 v100 (x32, Release) 간 연동

 

2. 목적

    ˙ MariaDB와 Visual Studio(C++) 간 연동 설정 및 동작을 확인한다.

    ˙ Visual Studio 버전별 연동 설정 및 동작을 확인한다.

 

3. 적용

    ① Maria DB에 접속하여 시험용 테이블과 데이터를 준비한다.

 

    ② 프로젝트 속성창 <C/C++> → <일반> → <추가 포함 디렉토리>에 "MraiaDB include" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\include\mysql

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\include\mysql

 

    ③ 프로젝트 속성창 <링커> → <일반> → <추가 라이브러리 디렉토리>에 "MraiaDB library" 폴더를 추가한다.

        - MariaDB (x64) : C:\Program Files\MariaDB 10.5\lib

        - MariaDB (x32) : C:\Program Files (x86)\MariaDB 10.5\lib

 

    ④ 프로젝트 속성창 <링커> → <입력> → <추가 종속성>에 "libmariadb.lib" 파일을 추가한다.

 

    ⑤ Visual Studio 프로젝트 폴더에 "libmariadb.dll" 파일을 복사한다.

 

    ⑥ DB에서 데이터 추출을 위한 코드를 작성한다.

mariaDbConnMain.cpp
0.00MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <mysql.h>
 
using namespace std;
 
void main()
{
      MYSQL *conn;
      MYSQL *conn_result;
      unsigned int timeout_sec = 1;
 
      conn = mysql_init(NULL);
      mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &timeout_sec);
      conn_result = mysql_real_connect(conn, "127.0.0.1""root""1q2w3e""test"3307NULL0);
 
 
      if (NULL == conn_result)
      {
            cout << "DB Connection Fail" << endl;
      }
      else
      {
            cout << "DB Connection Success" << endl;
 
            char query[1024];
            MYSQL_RES *result;
            MYSQL_ROW row;
 
            sprintf_s(query, 1024"SELECT * FROM testTbl");
 
            // Send Query
            if (mysql_query(conn, query))
            {
                cout << "SELECT Fail" << endl;
            }
 
            // Get Response
            result = mysql_store_result(conn);
 
            int fields = mysql_num_fields(result);    // 필드 갯수 구함
 
            while (row = mysql_fetch_row(result))     // 모든 레코드 탐색
            {
                for (int i = 0; i < fields; i++)    // 각각의 레코드에서 모든 필드 값 출력
                {
                    cout << row[i] << "   ";
                }
                cout << endl;
            }
 
            mysql_free_result(result);
            mysql_close(conn);
      }
 
      return;
}
cs

 

4. 결과

    ˙ 프로그램 실행 시 DB 테이블에 저장된 데이터를 정상적으로 가져올 수 있다.

 

    ˙ 여러 버전을 테스트한 결과 동일한 플랫폼 간 연동은 정상 동작 하지만, MariaDB(x32)와 Visual Studio(x64) 간

         또는 그 반대의 연동은 컴파일 시 링크 에러가 발생한다.

    ˙다른 플랫폼 간 연동을 위해서는 DB에서 제공하는 별도의 Connector가 필요하다.

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다 ※

반응형
반응형

1. 시험환경

    - Windows

    - Visual Studio 2015 (C++)

    - Boost 1.77.0

 

2. 목적

    - Boost 라이브러리를 다운 받아 설치한다.

    - Visual Studio 프로젝트에 Boost 라이브러리를 설정하고 동작하는 것을 확인한다.

 

3. 적용

    ① boost 웹사이트에서 운영체제에 맞는 파일을 다운 받는다.

        - URL : https://www.boost.org/

boost 파일 다운로드

 

    ② 압축 해제 하고, "bootstrap.bat" 파일을 실행한다.

파일 다운
bootstrap.bat

 

    ③ "bootstrap.bat"을 실행하면, "b2.exe" 파일이 생성되는데 실행한다.

        - 사실, boost library 설치는 여기서 끝이다. 간단하다.

        - ④ 단계부터는 설치한 boost 라이브러리를 Visual Studio Project에 적용해 보자.

b2.exe 실행

 

    ④ boost 폴더를 Include 디렉토리에 추가한다.

        - 프로젝트 → Properties → C/C++ → General → Additional Include Directories

Include에 boost 디렉토리 추가

 

    ⑤ boost\libs 폴더를 Linker에 추가한다.

        - 프로젝트 → Properties → Linker → General → Additional Library Directories

Linker에 boost lib 폴더 추가

 

    ⑥ boost 라이브러리를 사용하는 테스트 코드를 작성한다.

hello.cpp
0.00MB
테스트 코드 작성

 

4. 결과

boost 함수를 사용한 연산 결과

 

 

※ 내용이 도움 되셨다면 광고 클릭 한번 부탁드립니다.

반응형

+ Recent posts