Skjul symboler i statisk bibliotek
Jeg laver et statisk bibliotek hvor jeg ønsker at skjule så meget af implementeringen som overhovedet muligt for brugeren af biblioteket (og dem som prøver at "reverse engineer" biblioteket).Denne opgave består af to dele
1) Giv så lidt information som muligt med i header filerne.
2) Undgå symboler og lignende i .lib filen, der ikke er defineret i header filerne.
Mit spørgsmål går på at få så mange forslag som overhovedet muligt der hjælper med de to problemer.
Indtil videre bruger jeg følgende tre metoder der alle hjælper med opgave 1):
- Header filer jeg ønsker at skjule bliver kun inkluderet fra cpp filer (symbolerne fra header filerne bliver desværre stadig lagt i .lib filen!).
- Bug af unnamed namespaces (de kan dog ikke bruges hvis indholdet af en header fil skal bruges uden for headeren)
- D-pointer "design pattern" (til dem der ikke kender det: man lægger blot alle private member vars fra klasse X i en struct end classe (X_private) der er defineret i cpp filen og så giver man X member var "X_private * m_private") til at skjule private member variabler.
Alle ideer til hvordan jeg kan undgå at få lagt symbolerne i .lib filen og skjuler implementeringen i header filerne tages imod med kys-hånd:) Links til artikler eller lign. er også meget velkommende!
PS. man kan eventuelt bruge IDE'en? Jeg bruger Visual Studio 6.0, 2003 og 2005