동적 라이브러리 만들기
동적 라이브러리는 프로그램 실행 시 로드되는 라이브러리 파일로, 프로그램 자체의 크기를 차지하지 않습니다.
동적 라이브러리 프로젝트 선택:
새 .h 및 .cpp 파일 만들기:
1 2 3 | # cat.h
#pragma once
extern "C" _declspec(dllexport) int sum(int a, int b);
|
로그인 후 복사
1 2 3 4 5 6 | # cat.cpp
#include "pch.h"
#include "cat.h"
extern "C" _declspec(dllexport) int sum(int a, int b) {
return a + b;
}
|
로그인 후 복사
동적 라이브러리 릴리스 릴리스 버전을 선택합니다. 이 예에서는 ×64비트를 사용합니다.
C++ 동적 라이브러리 가져오기 방법 1
새 빈 C++ 프로젝트를 만들고 동적 라이브러리 프로젝트의 .lib 및 .dll 파일을 현재 프로젝트에 복사합니다.
C++ 프로젝트에서 다음을 추가합니다. 동적 라이브러리 헤더 파일은 현재 프로젝트에 복사할 필요가 없으며 기존 항목을 추가하기만 하면 됩니다. 여기서는 논리적으로 도입하기만 하면 되지만 #include 시에는 절대 및 상대 모두 .h 파일 경로를 사용해야 합니다. 경로가 허용됩니다.
1 2 3 4 5 6 7 8 | #include
#include "../../CATDLL/CATDLL/cat.h"
using namespace std;
#pragma comment(lib, "CATDLL.lib")
int main() {
cout << sum(1, 2) << endl;
return 0;
}
|
로그인 후 복사
- h 헤더 파일: dll에서 선언되고 출력되는 데이터 구조, 클래스, 함수 및 기타 정보와 같은 정보가 포함됩니다.
- lib 라이브러리 파일: DLL을 호출하는 애플리케이션 실행 파일에는 호출되는 함수 코드가 아니라 호출되는 프로젝트의 메모리 주소가 저장됩니다. DLL에서.
- dll 동적 라이브러리: 실제 콘텐츠가 포함되어 있습니다. 게시할 때 동일한 디렉터리에 .exe 파일과 .dll 파일만 필요합니다.
는 Project-Properties-Linker-Input-Additional에서도 구성할 수 있습니다. 종속성:
생략 가능: #pragma comment(lib, "CATDLL.lib")
C++ 가져오기 동적 라이브러리 방법 2
1 2 3 4 5 6 7 8 9 10 11 | #include
#include
using namespace std;
typedef int (*PSUM)(int, int);
int main() {
HMODULE hMoudle = LoadLibrary(TEXT( "CATDLL.dll" ));
PSUM psum = (PSUM)GetProcAddress(hMoudle, "sum" );
cout << psum(4, 5) << endl;
FreeLibrary(hMoudle);
return 0;
}
|
로그인 후 복사
Python은 C++ 동적 라이브러리를 가져옵니다
C++ dll은 64비트이므로 Python도 64비트를 사용해야 합니다.
1 2 3 4 5 6 | import os
from ctypes import *
os.chdir( "D:Cat课件CAT_CODINGC++项目开发MFC进阶和动态库注入辅助PYTEST" )
dll = cdll.LoadLibrary( "CATDLL.dll" )
ret = dll.sum(1, 2)
print(ret)
|
로그인 후 복사
이렇게 하면 일반적으로 사용되는 많은 함수를 C++를 사용하여 동적 라이브러리로 만들 수 있으며 C++ 또는 Python과 같은 다른 언어로 호출할 수 있습니다.
위 내용은 C++에서 동적 라이브러리를 호출하는 두 가지 방법과 Python에서 C++ 동적 라이브러리를 호출하는 두 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!