일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- asp.net
- 시간복잡도
- 큐
- 재귀
- 백준
- 정렬
- Merge Sort
- Docker
- REDIS
- C#
- .net maui
- quick sort
- API
- sql
- asp.net core
- 파이썬
- 스택
- .NET
- .net core
- docker-compose
- 탐색
- mysql
- 알고리즘
- maui
- BFS
- C++
- 자료구조
- 도커
- dfs
- Get
- Today
- Total
코젤브
[Visual C++]C++ 오픈 소스 프레임워크 정적 라이브러리로 사용하기 본문
결론은 가장 아래에 노랑 부분을 확인하자.
visual c++ 환경에 익숙해지면서
기존에 존재하는 오픈소스 프레임워크를 사용하는 방법에 대한 공부
외부 라이브러리는 특별한 경우가 아니라면 정적 라이브러리(.lib) 형태로 사용하면 된다.
나의 경우에는 Acl 네트워크 라이브러리를 활용하여 소켓 프로그래밍을 진행할 예정이다.
https://github.com/acl-dev/acl
BUILD.md 파일을 보면 빌드 방법에 대한 설명이 나와있다.
중국어라.. 아래는 기계번역한 내용이다.
Windows 플랫폼
1 컴파일
acl 프로젝트의 루트 디렉터리에는 여러 개의 VC 프로젝트 파일이 있으며,
사용자는 필요에 따라 프로젝트 파일을 열 수 있습니다 : acl_cpp_vc2003.sln, acl_cpp_vc2008.sln, acl_cpp_vc2010.sln, acl_cpp_vc2012.sln(가장 빠른 것은 VC6도 지원함).
사용자는 정적 라이브러리 디버그 버전, 정적 라이브러리 릴리스 버전,
동적 라이브러리 디버그 버전, 동적 라이브러리 릴리스 버전의 lib_acl, lib_protocol, lib_acl_cpp를 컴파일하도록 선택할 수 있으며 컴파일이 완료된 후 acl\dist\lib\win32 디렉터리에 생성되는 정적 라이브러리에는 다음이 있습니다:
-> 하지만 저의 경우 Debug 하위 폴더에 위치했습니다.
lib_acl_vc20xxd.lib, lib_acl_vc20xx.lib, lib_protocol_vc20xxd.lib 및 lib_protocol_vc20xx.lib입니다;
동적 라이브러리와 관련된 생성된 파일은 lib_acl_d.dll/lib_acl_d.lib, lib_acl.dll/lib_acl.lib, lib_protocol_d.dll/lib_protocol_d.lib, lib_protocol.dll/lib_프로토콜.dll/lib_. protocol.lib, lib_acl_cpp_d.dll/lib_acl_cpp_d.lib, lib_acl_cpp.dll/lib_acl_cpp.lib.
2 사용
(a) win32 플랫폼에서 lib_acl, lib_protocol 정적 라이브러리를 사용할 경우
include 디렉터리에 lib_acl/include, lib_protocol/include, lib_acl_cpp/include 경로만 추가하고
링크 시 정적 라이브러리의 경로와 정적 라이브러리 이름을 지정하면 됩니다.
속성에서 C/C++ > 일반 > 추가 포함 디렉터리에 헤더파일 경로 넣고
링커 > 일반 > 추가 라이브러리 디렉터리에 lib 파일 경로 넣고
링커 > 입력 > 추가 종속성에 lib파일 이름 넣기
(b) win32 플랫폼에서 lib_acl의 동적 라이브러리를 사용할 경우
(a)에서 지정한 것과 동일한 작업을 수행해야 할 뿐만 아니라 전처리기 정의에 ACL_DLL을 추가해야 하고,
lib_protocol의 동적 라이브러리를 사용할 경우 전처리기 정의에 HTTP_DLL 및 ICMP_DLL을 추가해야 하고,
lib_acl_cpp의 동적 라이브러리를 사용할 경우 HTTP_DLL 및 ICMP_DLL을 전처리기 정의에 추가해야 합니다.
동적 라이브러리를 사용하는 경우, 전처리기 정의에 ACL_CPP_DLL을 추가해야 합니다.
주의
lib_acl은 가장 기본적인 라이브러리이고, lib_protocol은 lib_acl에 의존하며, lib_acl_cpp는 lib_protocol과 lib_acl에 의존하므로 동적 라이브러리를 생성하는 순서에 주의해야 하며, 컴파일 순서는 lib_acl, lib_protocol, lib_acl_cpp 순입니다. cpp.
Translated with DeepL.com (free version)
해당 깃허브를 클론/다운 받아서 자신이 쓰고 싶은 버전의 솔루션을 열자. (나의경우 2022)
솔루션 탐색기에서 각 프로젝트(lib_acl, lib_protocol, lib_acl_cpp)에 대해 정적 라이브러리로 빌드하는 방법
우선 속성을 잘 확인하자. 속성값을 추후 내가 쓸 프로젝트에 맞게 올바르게 빌드해야한다.
정리 및 주의할 점
빌드 후, 정적 라이브러리 추가 시 아래 부분만 기억하면 된다.
1. 반드시 속성에서 세팅이 32비트인지 64비트인지 확인하기(오픈소스의 빌드 버전과 맞춰야 한다)
- 이때 속성 페이지의 구성뿐만 아니라, 구성 관리자를 눌러서 확실히 확인하자.
2. 속성에서 C/C++ > 일반 > 추가 포함 디렉터리에 헤더파일 경로 넣고
링커 > 일반 > 추가 라이브러리 디렉터리에 lib 파일 경로 넣고
링커 > 입력 > 추가 종속성에 lib파일 이름 넣기
위 부분만 잘 신경쓰면 문제 없다!!!!
조심해서 빌드해서 자신에게 맞게 오픈소스를 활용하자!
'컴공의 일상 > C++' 카테고리의 다른 글
[Visual C++] C++ 버전 확인 방법 - __cplusplus 199711로만 나오는 문제 (0) | 2024.08.13 |
---|---|
포인터 & 배열 & 벡터(Vector) (1) | 2024.08.09 |
0. 프로젝트 시작 및 소스코드 관리 기술 (0) | 2024.08.06 |
1강. 기초 코드 작성 요령 1 (0) | 2024.06.18 |