動態庫是在程式執行時載入的庫文件,並不佔用程式本身大小。
選擇動態函式庫專案:
新.h和.cpp檔:
# cat.h #pragma once extern "C" _declspec(dllexport) int sum(int a, int b);
# cat.cpp #include "pch.h" #include "cat.h" extern "C" _declspec(dllexport) int sum(int a, int b) { return a + b; }
動態庫發布選擇Release版本,本範例使用×64位元。
新建一個空的C 項目,將動態庫項目中.lib和.dll檔案拷貝到目前項目下:
在C 專案中,新增動態庫頭文件,可以不複製到目前專案下,新增現有項就可以,這裡只需要邏輯上引入,但是在#include時要使用.h檔的路徑,絕對路徑和相對路徑都可以。
#include #include "../../CATDLL/CATDLL/cat.h" using namespace std; #pragma comment(lib, "CATDLL.lib") int main() { cout << sum(1, 2) << endl; return 0; }
也可以在項目-屬性-連結器-輸入-附加相依性中進行設定:
可以省略:#pragma comment( lib, "CATDLL.lib")
#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; }
由於C dll是64位,Python也要使用64位元.
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中文網其他相關文章!