カスタム乱数ジェネレーターを作成し、それらのグローバル関数を SamRandom.h という名前のファイルに配置しました。ファイルは次のようになります。
#ifndef _SAM_RANDOM_H
#define _SAM_RANDOM_H
#include <cstdlib>
#include <ctime>
void InitialiseRandomSeed()
{
//...
}
//...
#endif
私は非常に複雑なオブジェクト指向プログラムで作業しており、あちこちにさまざまなコンポーネントが含まれています。とにかくこのファイルに関連するファイルを追加するたびに、次の競合メッセージが表示されます。
LaserBase.obj:-1: error: LNK2005: "void __cdecl InitialiseRandomSeed(void)" (?InitialiseRandomSeed@@YAXXZ) already defined in main.obj
error: LNK1169: one or more multiply defined symbols found
MSVC と MinGW では次のようになります。
In function `Z20InitialiseRandomSeedv':
SamRandom.h:8: multiple definition of `InitialiseRandomSeed()'
error: first defined here
:-1: error: collect2: ld returned 1 exit status
なぜこうなった?私は、プリプロセッサ ディレクティブがこの問題の発生を防ぐはずだと思っていました...これは本当に私を夢中にさせます!!!
PS: 問題は関数名とは無関係です。
ご尽力いただきありがとうございます