1

MSVC (特に 2010 バージョン) で DLL を作成する場合、小さな問題があります。私のプログラムは、主要部分と DLL で構成されています。DLL には次の関数が含まれています。

__declspec(dllexport) int test_function(void) {
    return 42;
}

ファイルは DLL プロジェクトを使用してコンパイルされます (プリコンパイル済みヘッダーを使用せず、空の DLL プロジェクトを選択しました)。dumpbinツールを使用してエクスポートされたシンボルをリストしたい場合、エクスポートのtest_function下にリストされません。__declspec(dllexport)実際にシンボルをエクスポートすることを強制する特定の設定はありますか?

どんな助けでも大歓迎です。ありがとうございました!

4

1 に答える 1

1

それはそれを行う必要があります。これがコード全体である場合は、次の点を確認してください。

1)実際に正しいdllをチェックしています。タイムスタンプを見てください。場所と名前を再確認してください。

2)指定されたcppをコンパイルしています(定義はcppファイルにあると思います)。ファイルがディレクトリにあるからといって、コンパイルされるわけではありません。プロジェクトに追加されていることを確認してください。

3) 関数がプリプロセッサ ディレクティブによってコンパイル ユニットから除外されていないことを確認します。

また、他のシンボルを探して、エクスポートされるシンボルと関数の間にどのような違いがあるかを確認してください。

これが失敗した場合は、ファイルに移動__declspec(dllexport)し、定義 ( なし) を. コンパイラがインライン化して最適化しようとする可能性があるため、エクスポートされない可能性があります。.h__declspec(dllexport).cpp

于 2011-09-23T09:59:21.713 に答える