スタブライブラリは.lib
ファイルであり、DLLではありません。これには、DLL内にエクスポートされたすべての関数の関数宣言が含まれており、DLL自体に呼び出しを転送するだけです。したがって、リンクするアプリケーションを作成する場合lua51.dll
は、リンカにリンクするように指示するとlua51.lib
、エクスポートされた関数へのすべての呼び出しがDLLに転送されます。これを行わなかった場合、リンク時に多くの「未解決の外部シンボル」エラーが発生します。
これは、DLLと静的にリンクする場合にのみ必要です(アプリケーションの実行時に自動的にロードされるようにするため)。を使用してDLLを動的にロードする場合は必要ありませんLoadLibrary
。
2つの異なるDLLがある理由について、マニュアルには次のように記載されています。
LuaBinaries DLLパッケージには、「lua51.dll」と呼ばれるdllプロキシがあります。他のディストリビューションからリリースされている他の「lua51.dll」を置き換えるために使用できます。呼び出しを「lua5.1.dll」に転送するだけです。転送に関係するコンパイル済みのソースコードはありません。
基本的に、一部の既存のアプリケーションはリンクしますがlua5.1.dll
、他のアプリケーションはリンクしlua51.dll
、両方をサポートしたいと考えています。いずれにせよ、これはスタブライブラリとは関係ありません。