728x90
반응형

C++ 11

[C++] main.cpp 이외에 빌드하는 법

보통 컴파일 설정하는 글을 보면main.cpp에서 "Hello World" 정도를 출력만가능한 정도의 설정만 알려주는 것 같다(내가 이해 못 한 것일 수도 있음) 이번에 설명할 내용은#ifndef IRun_h#define IRun_h#include class IRun {public: virtual void run() = 0; virtual ~IRun() = default;};#endif // IRun_h#ifndef A_H#define A_H#include "IRun.h"class A : public IRun {public: void run() override;};#endif // A_H#include "A.h"#include "B.h"int main(){ A a; B b; a..

C++ 2024.06.05

MongoCxx 라이브러리 Min, Max 해결 방법

링크도 잘 되어 있고, 다른 게 모두 정상인 것 같은데빌드 버튼을 누르는 순간 find.hpp 에서 Min 어쩌구 Max 어쩌구 경고가 뜨는 현상이 있는 사람들이 이 글까지 왔을 것이다. 해당 현상은 Windosw에서 Min Max를 매크로로 생성해두어 충돌하여 발생한 것이라고 하는데이 현상을 해결하는 방법은#define NOMINMAX#include #undef min#undef max#incdlue "MongoCxx~~.hpp"위와 같다Windows.h를 include할 때 minmax를 정의하지 못하게 하고 undef min으로 혹시나 min max가 정의되어 있으면 undef해준 후 mongocxx들을 include 해주면 된다

C++ 2024.05.02

LNK2019 "public: __cdecl 함수명A(void)" (??0CMongoDB@@QEAA@XZ)"public: __cdecl 함수명B(void)" (??0클래스명@@QEAA@XZ) 함수에서 참조되는 확인할 수 없는 외부 기호 해결 방법

만약 온갖 방법을 다 활용해 보아도 안되었거나 동일한 설정을 한 프로젝트 A와 B 중 한 프로젝트만 빌드가 되는 현상이 발생했다면 한번 확인해야 하는 사항이 있다. 중간에 프로젝트에 참여했거나, 기존 프로젝트에서 코드를 가져와 비주얼 스튜디오에 넣어서 라이브러리를 Include한 상태라면 비주얼 스튜디오에 해당 스크립트가 있는지 확인하는 것이다.실제 경로에는 코드가 있지만, 솔류션 탐색기에서 프로젝트를 확장해 보았을 때 해당 코드들이 없다면 수동으로 추가해주어야 한다. 추가하는 방법은 프로젝트나 넣어줄 폴더 우클릭 -> 추가 -> 기존 항목을 누른 후 넣어줘야할 코드들을 모두 넣어주면 된다.하나씩 넣을 필요없이 여러 개 한 번에 가능하다. 진짜 별 생쑈를 다했는데 저거 한 번 하니까 정상 빌드되었다 ㅎ;;;

C++ 2024.05.02

[MongoDB] 외부 연결 설정안될 때 해결법

.conf파일에서 ip bind를 0.0.0.0로 설정해도 안되는 분들이 이 글까지 찾아왔을거라 생각됩니다 이외에 mongo를 실행할 떄 Mongo -u [userId] -p [password] --host [~~IP~~] authenticationDatabase [dbTable] 라는 방식으로도 해보았는데 안되었을겁니다. 그런데 해결방법은 진짜... 가까이 있었습니다요 Mongod를 실행하면 뜨는 위의 Warning 메세지에서 답을 발견할 수 있습니다. 발견하셨나요 세~ 네 번째 줄을 보면 특정 IP 주소를 입력하거나 --bind_ip_all을 해버리라고합니다. 자 Mongod를 종료하고 cmd를 킵시다. 이제 방금같은 warning 메세지는 사라졌을 것입니다 다른 cmd를 실행시켜서 아래와 같이 입력..

C++ 2024.04.12

[C++] 컨텍스트 스위치란

컨텍스트 스위치(Context Switch)CPU가 현재 실행 중인 프로세스 또는 스레드에서 다른 프로세스 또는 스레드로 전환하는 과정 이 과정에는 현재 실행 중인 프로세스의 상태(컨텍스트)를 저장하고, 새로운 프로세스의 상태를 불러와서 CPU가 이어서 작업을 수행할 수 있도록 하는 작업이 포함 컨텍스트 스위치는 다음과 같은 상황에서 발생- Time Slice가 끝났을 때: 운영체제가 각 프로세스에 할당한 시간이 끝나면 다음 프로세스로 전환 - I/O 요청이 있을 때: 프로세스가 I/O 작업을 요청하면, 그 작업이 완료될 때까지 CPU는 다른 프로세스로 전환 - 우선순위가 높은 프로세스가 등장했을 때: 더 높은 우선순위를 가진 프로세스가 실행 준비가 되면, 현재 프로세스를 중단하고 우선순위가 높은 프로세..

C++ 2024.03.17

[CPP] 분할 구현

- .h(헤더) 파일에는 함수나 클래스의 선언 - .cpp 파일에는 함수나 클래스의 구현(구현하는 부분에서는 선언한 .h파일을 #include "~~.h"식으로 전처리 해주어야 한다) - 이후 함수를 참조하려면 .h파일 전처리(#include) 하면 해당 함수 사용 가능 test.hclass TestClass{ private: int m_testValue; public: void Output(); void Set(int _value); int Get(); }test.cpp #include #include "test.h" void Test::Output(){ std::cout

C++ 2024.03.15

[C++] Merger Sort 병합 정렬

[병합 정렬의 이점] - 많은 양의 데이터에 대해 효율적 - 효율 O(Log N) - 안정적인 정렬 알고리즘 - 데이터의 초기 순서에 관계없이 항상 일정한 성능 제공 [병합 정렬의 단점] - 메모리를 임시로 저장하기 때문에 메모리 요구량이 크지만, 요즘 사양의 컴퓨터에겐 큰 무리는 없을 수 있다 #include #include // 두 개의 정렬된 서브 배열을 합병하는 함수 void merge(std::vector& arr, int left, int mid, int right) { int n1 = mid - left + 1; int n2 = right - mid; // 임시 배열을 생성하고 데이터를 복사합니다. std::vector L(n1), R(n2); for (int i = 0; i < n1; i+..

C++ 2024.03.15
728x90
반응형