C ++ VS2010 comstack mon code en code presque lisible

J’ai essayé de “pirater” ma propre application en utilisant un décompilateur. Je pouvais clairement voir les noms des fonctions et de nombreux noms d’argument.

Par conséquent, je pense que je comstack en quelque sorte les informations de débogage avec mon code bien qu’il soit défini sur Release.

De plus, le compilateur me dit des choses comme

mylib.lib (vq.obj): avertissement LNK4099: PDB “vc100.pdb” n’a pas été trouvé avec “mylib.lib (vq.obj)” ou à “M: \ myapp \ Release \ vc100.pdb”; L’object sera lié comme si aucune information de débogage n’était disponible.

Est-ce un indice que VC essaie d’inclure des informations de débogage?

De plus, ma solution consiste en 3 projets résultant en 3 dll sous forme compilée.

Quand je “pirate” l’un des 3 dlls, je peux voir les noms des 2 autres dlls. Je ne sais pas pourquoi.

Quelqu’un peut-il me dire comment je peux rendre la dll moins debuggable et comment “utiliser” seulement la fonction de dll dans dll au lieu de toutes les fonctions dans 1 dll. J’espère que je pourrais bien l’expliquer.

Est-ce un indice que VC essaie d’inclure des informations de débogage?

Oui, cela signifie que vous associez vos fichiers DLL à des informations de débogage. Vous pouvez le désactiver en définissant Linker -> Debugging -> Generate Debug Info sur Non. Notez cependant que cette option n’affectera pas (approximativement) votre fichier dll, mais changera la génération du fichier pdb.

Il existe deux types d’entités, dont les noms seront explicitement stockés dans le fichier dll:

  • Fonctions d’interface
  • Noms de classes polymorphes

Vous ne pouvez pas vous débarrasser du premier. Toute personne utilisant dll doit savoir comment une fonction d’interface est nommée.

Vous pouvez cependant désactiver le second. Les noms de classes polymorphes ne sont nécessaires que si RTTI est activé. C’est comme ça que vous faites dynamic_cast et typeid . Si vous n’avez pas besoin de ces fonctionnalités, vous pouvez désactiver RTTI en accédant à C / C ++ -> Langue -> Activer les informations de type à l’exécution et définissez-le sur Non.

Tous les noms des autres entités seront supprimés par le compilateur.