Create dynamic library
Dynamic library is a library file loaded when the program is running and does not occupy the size of the program itself.
Select dynamic library project:
##Create new .h and .cpp files:
# cat.h
#pragma once
extern "C" _declspec(dllexport) int sum(int a, int b);
Copy after login
# cat.cpp
#include "pch.h"
#include "cat.h"
extern "C" _declspec(dllexport) int sum(int a, int b) {
return a + b;
}
Copy after login
Select the Release version for dynamic library publishing. This example uses ×64 bit.
C Import dynamic library method one
#Create an empty C project and copy the .lib and .dll files in the dynamic library project to the current project :
In the C project, add the dynamic library header file. You don’t need to copy it to the current project, just add the existing item. It only needs to be logically introduced here, but When #include, use the path of the .h file. Both absolute and relative paths are acceptable.
#include
#include "../../CATDLL/CATDLL/cat.h"
using namespace std;
#pragma comment(lib, "CATDLL.lib")
int main() {
cout << sum(1, 2) << endl;
return 0;
}
Copy after login
h Header file: Contains information such as data structures, classes, functions and other information declared and output in the dll. lib library file: contains the name and location of the project exported by the DLL. In the application executable file that calls the dll, what is stored is not the function code being called, but the project to be called in the DLL. memory address. dll dynamic library: contains the actual content. When publishing, only the .exe file and the .dll file are required, in the same directory.
Can also be configured in Project-Properties-Linker-Input-Additional Dependencies:
Can be omitted: #pragma comment( lib, "CATDLL.lib")
C Method 2 of importing dynamic library
#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;
}
Copy after login
Python imports C dynamic library
Since C dll is 64-bit, Python must also use 64-bit Bit.
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)
Copy after login
In this way, many commonly used functions can be made into dynamic libraries in C and can be called by other languages such as C or Python.
The above is the detailed content of Two ways for C++ to call dynamic libraries and Python to call C++ dynamic libraries. For more information, please follow other related articles on the PHP Chinese website!