C++ LNK2005 ошибка со структурой в заголовочном файле
У меня есть VS2013 C++ MFC Modeless Dialog, вызываемый из main{}, который имеет другие немодальные диалоги как дочерние.
Поскольку некоторые функции должны вызываться из дочерних элементов, у меня есть эти функции в заголовке common.h вместе со структурой, которая вызывает мою головную боль.
В общем. Ч у меня (сейчас)
struct L_ShotPointStruct { int x; int y; };
// I resorted to namespace because of other errors that the compiler was giving.
namespace LaserVid{
L_ShotPointStruct L_shotsArray[100];
};
В common.h есть функция, которая ссылается на L_shotsArray, и функции в ChildDlg, которые также ссылаются на L_shotsArray.
В шапке ModelessDlg.h у меня есть
#include "common.h"
// edit..I had left this one out.
// needed to call the child dialog
#include "ChildDlg.h"
// edit 2
extern struct L_ShotPointStruct L_shotsArray[100];
using namespace LaserVid;
В скомпилированном ModelessDlg.cpp у меня конечно же есть
#include "ModelessDlg.h"
В немодальном заголовке ChildDlg1.h у меня есть
#include "common.h"
using namespace LaserVid;
// edit 2
extern struct L_ShotPointStruct L_shotsArray[100];
Когда я компилирую, я получаю ошибку LNK2005 "struct L_ShotPointStruct * LaserVid::L_shotsArray" (), уже определенную в ModelessDlg.obj
Правка 2: вышеуказанная ошибка повторяется для File: ChildDlg1, ChildDlg2, ChildDlg3 и основного объекта "view".
Я играл в Wack-A-Mole с кодом, чтобы это исправить. Я поместил объявление структуры в ModlessDlg.h вместо common.h. Я объявил структуру как
struct L_ShotPoint { int x; int y; };
typedef L_ShotPoint* L_PointsArr;
namespace LaserVid{
L_PointsArr L_shotsArray = new L_ShotPoint[100];
};
И многое другое, но, что бы я ни делал, я вернусь к этому. Любые идеи, которые могут направить меня в правильном направлении? Считайте, что это горячая линия самоубийства.
Спасибо,
издание