언어/C++

· 언어/C++
c++에서 외부 라이브러리의 기능(메서드)를 사용해야하는 상황. // [Project.cpp] #include "Project.h" #include "library.h" void main(){ // library.cpp 에 정의되어있는 메서드 Function(); } 위와 같은 방식으로 Project.cpp 에서 library.cpp에 정의되어있는 Function() 메서드를 실행하려면 라이브러리를 어떻게 개발해야할까? library 입장에선 export library를 개발하는 입장에서는 // [library.h] static bool __declspec(dllexport) Function(); //선언부 // [library.cpp] #include "library.h" bool Function(){..
· 언어/C++
dll : 동적 라이브러리 lib : 정적 라이브러리 dll은 런타임 중에, lib는 컴파일 중에 필요하다. lib 소프트웨어 실행 파일을 만들 때 소스 코드를 컴파일하고 만들어진 obj 파일을 링커가 하나로 묶어 exe 파일을 든다. 이 때 lib 을 사용하면 링크 단계에서 링커가 lib 파일도 같이 묶어서 하나의 exe 파일을 만들게 된다.(exe 파일이 무거워 진다.) 정적 라이브러리이므로, 많이 사용되면 RAM에 메모리가 많이 올라가게 된다. pch : 전처리기가 헤더 파일의 내용을 가져와서 같이 컴파일함 pch와 lib의 차이점으로는, pch와 달리 lib 은 이미 컴파일 되어있으며, obj 파일을 가지고 링커가 연결만 시켜준다는 것이다. 또한, pch는 사용하려는 모든 곳에 명시해야한다. dl..
· 언어/C++
다음의 오류들과 모두 관련이 있습니다. C2011 클래스 형식 재정의 C3861 식별자를 찾을 수 없습니다 LNK2019 함수에서 참조되는 확인할 수 없는 외부 기호 LNK2005 *.obj에 이미 정의되어있습니다. 코드 리팩터링 중 위 에러들을 겪으며 생각한 내용, 이해하고 넘어가야 할 부분 정리했다. 대부분은 전방선언과 헤더 파일 import 하는 과정에서 문제가 발생했을 것이다. c++에서 다른 파일에 있는 클래스 참조하기 내가 지금 작성중인 a.cpp파일에서, 다른 파일에 있는 클래스를 사용하고싶으면, 먼저 컴파일러에게 해당 클래스가 다른파일에 정말 존재함을 알려줘야하는데 아래 두 가지의 방법이 있다. 해당 클래스가 ‘선언’된 헤더파일을 include하기 해당 클래스명을 내가 작성중인 a.cpp파..
· 언어/C++
메모리가 할당되는 방식 일반적으로 변수는 스택에서 변수 형태에 따라 다른 길이의 메모리 공간을 갖는다. 정수형 변수를 선언과 동시에 값을 대입하는 다음 코드는, int myInt = 123; 스택에서 int 자료형의 크기인 4바이트만큼을 myInt 변수의 값을 쓰고 저장하고 읽기 위해서 공간할당해준다. 해당 공간에 123에 해당하는 2진수 값이 입력되게 된다. 123을 이진수로 표현하면 11111011이 되므로 int 형의 크기인 4byte 만큼 할당 받은 공간에 스택 메모리에 다음과 같은 일이 일어났을 것이다. (00000000 / 00000000 / 00000000 / 11111011) 그리고 해당 메모리 구역의 이름을 컴퓨터가 myInt라고 부른다고 생각하면 된다. 값을 수정하려면? 사용자가 "my..
· 언어/C++
기존 변수에 새 이름을 지정해주는 용도 변수에 타입 뒤에 &를 붙이면 그 변수는 레퍼런스가 된다. 개발자가 코드에서 다루는 방법은 일반 변수와 같지만 내부적으로는 원본 변수에 대한 포인터로 취급한다. int x = 32; int& x_refer = x; 이게 왜있나 싶을 수도 있는데, 함수에 매개변수로 전달하는 과정에서 유용하게 사용된다. 레퍼런스 전달 방식 일반적으로 함수에 매개변수로 전달한 변수는 값 전달 방식(pass by value)로 처리된다. 즉, 함수에 전달되는 과정에서 복사가 일어난다! 이는 일반적으로 함수에 매개변수로 전달된 원본 객체의 필드나 변수의 값을 변경할 수 없도록 방어한 조치인데, 만약 원본 변수의 값을 변경하는 함수를 만들고 싶다면 C언어에서는 복잡한 포인터 연산을 수행할 수..
서병렬
'언어/C++' 카테고리의 글 목록