1. 静的接続ライブラリLIBとは何か、動的リンクライブラリDLLとは何か? 静的リンクライブラリと動的リンクライブラリの両方がコードを共有しており、どちらもバイナリ形式です
2. 静的リンクライブラリLIBと動的リンクライブラリDLLの違い 静的リンクライブラリを使う場合、ライブラリ内のすべての命令が直接EXEファイルに含まれています。 動的動的リンクライブラリは最終的なEXEファイルに必ずしも含める必要はなく、EXEファイル実行時に「動的」参照やアンロードが可能です。 もう一つの違いは、静的リンクライブラリは他の動的または静的リンクのライブラリを含めなくなるのに対し、動的リンクライブラリは他の動的または静的リンクのライブラリを含めることができない点です。
3. 静的リンクライブラリ呼び出しメソッド: 生存してlibファイルを生成しましょう:
VS2017--> 新しいプロジェクトを作成してください。>windowsデスクトップを起動。静的ライブラリ>プロジェクト名はLibtestです。
新しい関数と functem.cpp
functem.h:
#pragma 一度だけ #include 「stdafx.h」 #ifndef _functem_H #define _functem_H int functem(int a, int b); #endif
functem.cpp:
#include 「functem.h」 #include 「stdafx.h」
int functem(int a, int b)
{ A + B を返す;
} その後プロジェクトを生成すると、DebugディレクトリにLibtest.libとLibtest.pdbの2つのファイルが存在します
電話をかける際は、3つのステップが必要です:
1. Libtest.libとfunctem.hを呼び出し元のディレクトリにコピーします。以下の図に示すように:
2. 呼び出し cpp ファイルの上に「functem.h」#include を追加します
3. 呼び出し #pragma cppファイルの上にコメント(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を返す;
} プロジェクトを生成し、Debugディレクトリには以下があります:
通話プロセス:
1. Dlltest.dll、Dlltest.lib、Dlltest.hをコピーし、発信者のディレクトリにコピーします。以下の図のように:
追伸:ここでのDlltest.libはコンパイルリンクのコンパイル時のみ使用されるため、プログラム生成後はlibファイルは含めずdllファイルのみを含めることができ、実際の用途はdllファイルです。 要するに、3つのファイルすべてをコピーする必要がありますが、リンクのコンパイルには.hと.libが使われ、最終生成されたディレクトリには.dll 4つのファイルだけを配置すればよいのです。
2. 呼び出し #include cpファイルの上に「Dlltest.h」を追加します
3. 呼び出し #pragma cppファイルの上にコメント(lib, "Dlltest.lib")を追加します
通話は成功しました! --------------------- 著者:バード 出典:CSDN オリジナル:https://blog.csdn.net/wcc27857285/article/details/84615891 著作権注意:この記事はブロガーによるオリジナル記事です。転載のためにブログ投稿のリンクを添付してください!
|