C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

WBOY
リリース: 2023-04-08 12:45:01
転載
3443 人が閲覧しました

ダイナミック ライブラリの作成

ダイナミック ライブラリは、プログラムの実行時にロードされるライブラリ ファイルであり、プログラム自体のサイズを占有しません。

ダイナミック ライブラリ プロジェクトの選択:

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

##新しい .h および .cpp ファイルの作成:

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

# 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;
}
ログイン後にコピー

ダイナミック ライブラリ パブリッシングのリリース バージョンを選択します。この例では ×64 ビットを使用します。

C ダイナミック ライブラリ メソッド 1 のインポート

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

#空の C プロジェクトを作成し、ダイナミック ライブラリ プロジェクト内の .lib ファイルと .dll ファイルを現在のプロジェクトにコピーします。プロジェクト :

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

C プロジェクトにダイナミック ライブラリ ヘッダー ファイルを追加します。現在のプロジェクトにコピーする必要はなく、既存の項目を追加するだけです。ここでは論理的に導入する必要がありますが、#include の場合は、.h ファイルのパスを使用します。絶対パスと相対パスの両方を使用できます。

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

#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のメモリアドレス。
  • dll ダイナミック ライブラリ: 実際のコンテンツが含まれています。公開する場合、同じディレクトリにある .exe ファイルと .dll ファイルのみが必要です。
プロジェクト-プロパティ-リンカー-入力-追加の依存関係でも構成できます:

C++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法

省略可能: #pragma comment( lib, "CATDLL.lib")

C ダイナミック ライブラリをインポートする方法 2

#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 を使用する必要があります-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)
ログイン後にコピー

このようにして、一般的に使用される多くの関数を C で動的ライブラリにすることができ、C や Python などの他の言語から呼び出すことができます。

以上がC++ が動的ライブラリを呼び出す方法と、Python が C++ 動的ライブラリを呼び出すための 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!