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
Jeg forstår ikke pointen med dll'en og hvad er dens forhold til lib'en?
Ja, det er klart at alt lib'en eksponere skal have symboler i lib'en, men der kan (og der er i mit tilfælde) jo sagtens være masse a klasser samt funktioner brugt internt i lib'en som jeg ikke ønsker at eksponere symbolerne på.
da en lib skal kunne bruges f mange programmer er den nødt til at ekspose alt
i en DLL kan du selv angive hvilke symboler der skal exposes
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.