0

.def ファイルから .lib ファイルをビルドできるように、Visual Studio コマンド プロンプトから lib.exe を呼び出そうとしています。これを実行すると:

lib.exe /MACHINE:X86 /DEF:MyDLL.def

最後に、DLL 内から関数を呼び出すときに使用する関数をエクスポートしたいと考えています。2 つの DLL があり、最初の DLL が 2 番目の DLL を呼び出すため、このライブラリを作成する必要があります。2 つ目は、DLL 自体があり、ヘッダーまたは .cpp ファイルがありません。.lib ファイルがないため、作成しようとしています。このツールexpdef - def ファイル ジェネレーターを使用して .def ファイルを作成し、次のチュートリアルに従いました。

コマンドプロンプトから受け取るエラーは次のとおりです。

リンク: 致命的なエラー LNK1104: ファイル 'MyDLL.def' を開けません

そのため、多くのフォーラムや検索を検索してみましたが、これが表示される理由の解決策が見つかりません.

私はこれを別のフォーラムに投稿しました ここで、私が完全にやりたいことを説明しています。

4

1 に答える 1

1

DLL の .lib を持っていない場合の別のオプションは、Win32 API の LoadLibrary() および GetProcAddress() です。呼び出し先 DLL のエクスポートされたエントリ ポイントの名前を使用して、呼び出し元コードからこれらの API を呼び出します。最初の DLL をリンクするときに、呼び出し先の DLL について言及する必要はまったくありません。

エクスポートされたエントリ ポイントの名前を取得するには、"dumpbin /exports" などのツールや、呼び出し先 DLL の depends.exe を使用できます。

もちろん、呼び出されたエントリ ポイントのシグネチャやその他の前提条件を知っておく必要があります。そうしないと、未定義の動作が発生します。最悪の場合は、呼び出しをデバッグすることでこれらを推測できる場合があります。

于 2013-08-02T19:22:36.667 に答える