"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Ik neem aan dat je met een 'externe' library een DLL bedoeld? (ps: is het trouwens voor een Windows systeem?).
Als je je applicatie gebruik wilt laten maken van een DLL, zul je je applicatie moeten linken met eventueel een static library en/of een headerfile waarin de functies (die jij mag gebruiken) van de DLL-staan. Hierin staan vrijwel altijd ook de type-definities in. Nu, zul je tijdens het compileren/linken een melding krijgen dat er een type-redefinitie heeft plaats gevonden.
Als je je applicatie gebruik wilt laten maken van een DLL, zul je je applicatie moeten linken met eventueel een static library en/of een headerfile waarin de functies (die jij mag gebruiken) van de DLL-staan. Hierin staan vrijwel altijd ook de type-definities in. Nu, zul je tijdens het compileren/linken een melding krijgen dat er een type-redefinitie heeft plaats gevonden.
"The fastest code, is the code that is never called."
Mischien dat namespaces een oplossing kunnen zijn? Dan voorkom je dat namen dubbel gebruikt worden.
Bijv:
Bijv:
code:
1
2
3
4
5
6
7
8
9
10
| namespace foo {
typedef long type_xyz;
}
namespace bar {
typedef short type_xyz;
}
foo::type_xyz a;
bar::type_xyz b; |
Als het tijdens het compilen moet zijn dan hoef je geloof ik niks te doen. Laatst kreeg ik namelijk compile warnings van een aantal redefines. Met andere woorden als er iets twee keer gedefined word dan herkent de compiler dit al.
met VC++6 kreeg ik errors... tenminste, in het geval dat ik dus een int32 als long heb, en een externe code (library dus) defineerd het als bijvoorbeel een unsigned long... krijg ik twee errors. Nu heb ik het uit de header gehaald van de library, maarja, 'tis niet een geweldige oplossing...Op donderdag 21 februari 2002 22:03 schreef -bolio- het volgende:
Als het tijdens het compilen moet zijn dan hoef je geloof ik niks te doen. Laatst kreeg ik namelijk compile warnings van een aantal redefines. Met andere woorden als er iets twee keer gedefined word dan herkent de compiler dit al.
"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs
Nee, en dat is met opzet. Want als iemand anders danOp donderdag 21 februari 2002 20:28 schreef _Mo_ het volgende:
Hoi,
Ik vroeg me af of er een manier was om er achter te komen, tijdens compile tijd, of een bepaalde typedef al bestaat. Stel ik heb dit:
code:
1 typedef long int32;
Maar bijvoorbeeld een externe library heeft dit ook... is er een manier om er achter te komen of deze al bestaat, net zoals bijvoorbeeld
code:
1 2 3 #ifndef __BLAAT__ #define __BLAAT__ #endif // __BLAAT__
dat ie dan de tweede definitie overslaat...
typedef double int32; heeft staan dan doet jouw code
het niet meer. Oplossing:
code:
1
2
3
| namespace your_name {
typedef long int32;
} |
Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein
Pagina: 1