メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

概要

Microsoft Visual C++ のコンパイラとリンカーの 64 ビット バージョンを使用して DLL をビルドするとき、エクスポートに複数回の関数が宣言されている場合にリンカー エラー番号 LNK4197 が表示されます。

現象

リンカー出力を次のようなことがあります。

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

原因

エクスポート複数回の関数が宣言されているときに、リンカー エラー番号 LNK4197 が生成されます。エクスポートする次の方法のいずれかで宣言された関数。

  • 方式を使用して、C のソース ファイル内で関数を宣言します。

    __declspec(dllexport) int DllSample() {   return 42;}
  • モジュール定義を使用して、関数が宣言されている (。DEF) ファイル。

    EXPORTS   DllSample

このリンカー エラーが最も頻繁に発生すると関数キーワードとします。DEF ファイルを使用してで同じ関数名を定義します。DLL プロジェクトです。

解決方法

この問題を解決するには、エクスポートされた関数のみ 1 回定義、方式を使用して、またはを使用して、します。DEF ファイルです。これらのメソッドの両方を使わないでください。

状態

これは仕様による動作です。

詳細情報

エクスポート複数回の関数を宣言することがないが生じる場合、Microsoft Windows の C コンパイラとリンカーの 32 ビット バージョンでこの資料の「現象」に記載されているリンカー エラーが発生します。ただし、Windows の C コンパイラとリンカーの 32 ビットと 64 ビットの両方のバージョンの関数のエクスポート 1 つだけの時間を定義することをお勧めします。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×