.Hヘッダファイルの.libダイナミックリンクライブラリファイルの.dllダイナミックリンクライブラリ

(1).Hヘッダファイルがなければなりませんコンパイル時、LIBが必要とされているリンクがあり、DLLは、実行時に必要とされています。

附加依赖项的是.lib 不是.dll 

若生成了DLL ,则肯定也生成 LIB文件

十分な、あなたがソースコードをコンパイルしてリンクする場合はヘッダファイルとlib。
プログラムが起動している動的な接続を行う場合は、十分なDLLがあります。
当然の開発とデバッグ相、そこに最高で。

3間.Hの.libの.dllの関係は次のとおりです。

H文件 作用是:声明函数接口 

DLL文件 作用是: 函数可执行代码 

当我们在自己的程序中引用了一个H文件里的函数,编链器怎么知道该调用哪个DLL文件呢? 

这就是LIB 文件的作用: 告诉链接器 调用的函数在哪个DLL中,函数执行代码在DLL中的什么位置 

这也就是为什么需要 附加依赖项 .LIB文件 ,它起到桥梁的作用。

如果生成静态库文件,则没有DLL ,只有lib,这时函数可执行代码部分也在lib文件中

目前以lib后缀的库有两种,一种为静态链接库


(Static  Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库


(Import  Libary,以下简称“导入库”)。 

静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一起。比如你链接一个静态库,如果其中有错,它会准确的找到是哪个obj有错,即静态lib只是壳子。   
动态库一般会有对应的导入库,方便程序静态载入动态链接库,否则你可能就需要自己LoadLibary调入DLL文件,然后再手工GetProcAddress获得对应函数了。有了导入库,你只需要链接导入库后按照头文件函数接口的声明调用函数就可以了。

导入库和静态库的区别很大,他们实质是不一样的东西。静态库本身就包含了实际执行代码、符号表等等,而对于导入库而言,其实际的执行代码位于动态库中,导入库只包含了地址符号表等,确保程序找到对应函数的一些基本地址信息。 

(2)一般的な動的ライブラリプログラムはLIBファイルやdllファイルを持っています。LIBファイルも、コンパイル時にアプリケーションを受けなければなりませんが、dllファイルが実行されて呼び出されます。DLLファイルは、対応するLIBファイルは通常、インデックス情報の一部、dllファイル内の特定の実装がある場合。唯一のlibファイル場合、これは、静的libにファイルをコンパイルし、及び実施されたインデックスでています。静的にコンパイルlibにファイル良いです:ユーザーは動的ライブラリをインストールしてからハングアップするために必要はありません。しかし、大規模なアプリケーションにつながった欠点がありますが、また、バージョンアップの際に、動的ライブラリの柔軟性を失い、仕事のための新しいアプリケーションを公開します。
(3)動的ライブラリの場合には、2つのファイルがあり、ライブラリが(.LIB)ファイルはDLLファイルで導入され、インポート・ライブラリ・ファイルは、DLLによってエクスポートされた関数の名前および位置を含む、DLLの機能は、実際に含まれていますデータ、アプリケーションは、使用する必要性にリンクされたDLLファイルLIBファイルを使用するライブラリ関数やデータは、実行可能ファイルにコピーされていないので、機能コードに保存されているアプリケーションの実行可能ファイルは、呼び出されていませんしかし、呼び出されるDLL内の関数のメモリアドレスに、1つ以上のアプリケーションは、このようにメモリリソースを節約し、プログラムコードを実行され、機能コードがリンク呼び出されたときになるように。上記の説明、DLL、および.LIBファイルから分かるように、それ以外のアプリケーションがエラーを生成します、アプリケーションと一緒に発行する必要があります。


VS2008で.LIBファイルを追加します。

方法の一つ:プロジェクトのプロパティ - >リンカ - >入力 - >追加の依存

上記のパスではスペースで区切って複数の名前に参加することができますlibに

 

アクトII:直接コードに反映。

#pragmaコメント(libに、 "WINMM.LIB")// WINMM.LIBライブラリを追加します

ます。https://my.oschina.net/dake/blog/196650で再現

おすすめ

転載: blog.csdn.net/weixin_33885253/article/details/91508140