Store problemer med LNK2005 fejl i Visual Studio 2005
Jeg sidder og roder med at bruge et eksperimentelt static library i C++ i Visual Studio 2005.For at gøre forklaringen mere simpel vil jeg simplificere min situation:
Jeg har 4 filer:
* ex1.cpp
* ex2.cpp og ex2.h
* ex3.h
--- ex1.cpp:
#include <ex2.h>
int main() { return 0; }
--- ex2.c:
#include <ex2.h>
//definition af klasse metoder etc. (ikke vigtigt her)
--- ex2.h:
#include <ex3.h>
//et namespace og en klasse (ikke vigtigt er)
Problemet opstår ved include af ex3.h i ex2.h. Fil ex3.h er headeren til det eksperimentelle library. Jeg får generelt denne fejl (hvor foo() er flere forskellelige funktioner):
ex1.obj : error LNK2005: "public: bool __thiscall foo()" (?foo@blabla) already defined in ex2.obj
I dette tilfælde er bool __thiscall foo() defineret i det eksperimentelle library som jeg benytter igennem ex3.h. Siden ex1.c og ex2.c begge forsøger at inklude ex3.h går det åbenbart galt for linkeren (begge obj-filer indeholder det samme??).
1) Hvad kan jeg føre for at få dette til at virke. Fil ex3.h indeholder en klasse template - og librariet er i det hele taget template-baseret? Er dette årsagen til problemet?
Jeg er rimelig ny indenfor C++ men har en del erfaring med C. Det skal siges at det eksperimentelle library (ARToolKitPlus 2.0.2 vis nogen vil vide det) fungerer fint hvis ex3.h ikke forsøges brugt to steder.
Hjælp venligst :)
Mvh Ole Buus