Ich habe versucht, ein Problem in Bezug auf Kompilierungseinheiten zu behandeln.Fehler LNK2005-Struktur bereits in .obj-Datei definiert
Der Fehler Ich erhalte ist
1>frtinvxml.obj : error LNK2005: "struct repFieldInfo det_rep_info" ([email protected]@[email protected]@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct repFieldInfo frt_rep_info" ([email protected]@[email protected]@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct FormToolbar * tb" ([email protected]@[email protected]@A) already defined in Frtinv.obj
1>frtinvxml.obj : error LNK2005: "struct tagDATE_STRUCT dateFrom" ([email protected]@[email protected]@A) already defined in Frtinv.obj
... (It goes on for every variable and method in the header...)
Dies ist der einzige Fehler, den ich immer bin. hier sind die, um auf dem Baum zu niedrigsten vom höchsten beteiligt zu jedem jeweiligen Klassen gehören ...
***Frtinv.hxx***
#pragma once
#include <voyage.ddh>
#include <vsched.ddh>
# ...
struct frtinvType : public frtinv_type
{
int fixCarSeq;
...
...
***frtinv.cxx***
//#define _IN_MAIN_
#include <decisionTable.h>
...
#define RINDEX 2
#define LINDEX 2
#define PINDEX 0
BOOL s_fNeedSaveAfterDelete = FALSE;
static int rateCnt = RINDEX, lumpCnt = LINDEX, pcntCnt = PINDEX;
//------------------------------------------------------------------------
int getPortcar(char *vslCode, int voyNo, int portCallSeq, int berthSeq, int seq, portcar_type *pret)
...
...
***frtinvxml.h***
#define _IN_MAIN_
#include <iostream>
#include <sstream>
#include <stdio.h>
#include <zdb.hxx>
#include <opr32.h>
#include <voyage.ddh>
#include <frtinv.ddh> <------ Tried to add these two to the solution, that failed.
#include <frtinv.hxx> <------
void exitGracefully();
std::list<voyage_type> getVoyages();
.. .
***frtinvxml.cpp***
#include "frtinvxml.h" <------ taking everything from frtinvxml.h
void main(int argc, char *argv[]) {
InitWinLib (10, 8);
...
Mein Problem stammt fr om die Tatsache, dass ich, selbst wenn ich die Dateien in den gleichen Ordner/Lösung platziere, sie nicht dazu bringen kann, sich nicht zweimal zu definieren. Auch wenn Sie das Schlüsselwort "Pragma einmal" verwenden. Ich habe auch versucht, die alte Schule #define, nicht zu verwenden, wenn es bereits existiert ... das hat auch nicht funktioniert.
Haben Sie irgendwelche Lösungen oder Empfehlungen?
Vielen Dank. Sehr hilfreich. Dies ist das erste Mal, dass ich tatsächlich mit C++ gearbeitet habe (und natürlich bei der Arbeit). Danke für das Verständnis. – Ian