1. 정적 연결 라이브러리 LIB와 동적 링크 라이브러리 DLL이란 무엇인가요? 정적 링크와 동적 링크 라이브러리 모두 바이너리 형식으로 코드를 공유합니다
2. 정적 링크 라이브러리 LIB와 동적 링크 라이브러리 DLL의 차이점 정적 연결 라이브러리를 사용하면 라이브러리 내 모든 명령어가 결과 EXE 파일에 직접 포함되어 있습니다. 동적 동적 링크 라이브러리는 최종 EXE 파일에 반드시 포함될 필요가 없으며, EXE 파일이 실행될 때 "동적으로" 참조하고 언로드할 수 있습니다. 또 다른 차이점은 정적 링크 라이브러리는 더 이상 다른 동적 또는 정적 링크 라이브러리를 포함할 수 없지만, 동적 링크 라이브러리는 다른 동적 또는 정적 링크 라이브러리를 포함할 수 있다는 점입니다.
3. 정적 링크 라이브러리 호출 방법: 리브(lib) 파일을 생성하기 위해 생존해 봅시다:
VS2017--> 새 프로젝트 생성-->windows desktop--> 정적 라이브러리, 프로젝트 이름은 Libtest입니다
새로운 함수.h와 functem.cpp
functem.h:
#pragma 한 번 #include "stdafx.h" #ifndef _functem_H #define _functem_H int 함수(int a, int b); #endif
functem.cpp:
#include "functem.h" #include "stdafx.h"
int 함수(int a, int b)
{ A + b 반환;
} 그 다음 프로젝트를 생성하면 Debug 디렉터리에 Libtest.lib와 Libtest.pdb 두 개의 파일이 생깁니다
전화를 걸 때는 세 가지 단계가 필요합니다:
1. Libtest.lib와 functem.h를 호출자의 디렉터리에 복사합니다; 아래 그림과 같이 합니다:
2. 호출 cpp 파일 위에 "functem.h"#include 추가하세요
3. 호출 cpp 파일 위에 #pragma 주석(lib, "Libtest.lib")을 추가하세요
위 그림에서 보듯이, 이 통화는 성공적이었습니다.
4. 동적 링크 라이브러리 호출 방법: 새 프로젝트 생성 - Dlltest라는 이름의 동적 링크 라이브러리를 >
새로운 Dlltest.h 만들기:
#pragma 한 번 #ifndef __CDLL_H__ #define __CDLL_H__ extern "C" int _declspec(dllexport) add(int x, int y); #endif
Dlltest.cpp:
#include "stdafx.h" #include "Dlltest.h" int add(int x, int y)
{ x + y를 반환;
} 프로젝트를 생성하세요. 디버그 디렉터리에는 다음과 같은 항목이 있습니다:
통화 절차:
1. Dlltest.dll, Dlltest.lib, Dlltest.h를 복사하여 발신자의 디렉터리로 저장합니다; 아래 그림과 같이 합니다:
추신: 여기서 Dlltest.lib은 컴파일러 링크를 컴파일할 때만 사용되기 때문에, 프로그램이 생성된 후에는 lib 파일을 포함할 수 없고 dll 파일만 포함할 수 있으며, 실제 용도는 dll 파일입니다. 요약하자면, 세 파일 모두 복사해야 하지만, .h와 .lib는 링크를 컴파일하는 데 사용되며, 최종 생성된 디렉터리에는 .dll만 배치하면 됩니다.
2. 호출된 cpp 파일 위에 "Dlltest.h"를 #include 추가하세요
3. 호출 cpp 파일 위에 #pragma 주석(lib, "Dlltest.lib")을 추가하세요
통화가 성공했습니다! --------------------- 저자: 버드 출처: CSDN 원본: https://blog.csdn.net/wcc27857285/article/details/84615891 저작권 고지: 이 글은 블로거의 원본 기사입니다. 재인쇄를 위해 블로그 게시물 링크를 첨부해 주세요!
|