リンカー ツールの警告 LNK4286
'filename_1.obj' で定義されたシンボル 'symbol' は 'filename_2.obj' によってインポートされています
同一イメージ内のオブジェクト ファイル filename_1.obj でシンボルが定義されているにもかかわらず、__declspec(dllimport) が symbol に指定されました。 この警告を解決するには、 __declspec(dllimport)
修飾子を削除します。
解説
警告 LNK4286 は、リンカーツールの警告 LNK4217 のより一般的なバージョンです。 リンカーは、どのオブジェクト ファイルがシンボルを参照しているかはわかるが、どの関数を参照しているかがわからない場合、警告 LNK4286 を生成します。
LNK4286 を解決するには、filename_2.obj で参照されている シンボル の前方宣言から __declspec(dllimport)
宣言修飾子を削除してください。
最終的に生成されたコードは正しく動作しますが、インポートされた関数を呼び出すために生成されるコードは、関数を直接呼び出すよりも効率が悪くなります。 この警告は、/clr オプションを使用してコンパイルした場合には表示されません。
データのインポートとエクスポート宣言の詳細は、dllexport、dllimport を参照してください。