Ich habe ein C++ - Projekt unter Visual Studio 2010, das in eine DLL kompiliert. Ich habe mehrere private implementierungsspezifische Klassen in meinem Projekt definiert, z. CMyClass
. Diese Klasse wird nicht von der DLL oder von einer Schnittstellenfunktion exportiert. Wenn ich jedoch generierte DLL-Dateien überprüfe, ist dort eine Zeichenfolge "CMyClass" gespeichert. Es ist ein Release-Build, und ich möchte nicht, dass diese Zeichenfolge in der DLL-Datei angezeigt wird. Diese DLL wird an Kunden ausgeliefert, und ich möchte, dass alle Namen, die ich in meinem Projekt verwendet habe, aus der DLL-Datei entfernt werden, damit niemand einen so einfachen Hinweis darauf bekommen kann, welche Algorithmen wir in unserer DLL verwenden.Entfernen Sie C++ - Klassennamen aus Binärdll-Datei
Ich benutze Release-Konfiguration. In den Projekteigenschaften ist die Option "Debug-Info generieren" unter der Linker-Registerkarte deaktiviert, das "Debug-Informationsformat" auf der Registerkarte C/C++ ist auf "Programmdatenbank (/ Zi)" eingestellt. Ich habe versucht, leere Zeichenfolge für "Debug Information Format" ohne Erfolg festzulegen.
Die in der DLL gefundene Zeichenfolge sieht wie [email protected]@
aus und befindet sich am Ende der DLL-Datei. Es ist das einzige Vorkommen der Zeichenfolge "CMyClass" in der DLL-Datei. Diese Zeichenfolge wird jedoch für fast alle meine internen Klassen angezeigt.
Wie Sie diese Erwähnungen loswerden?
aktualisieren
Bitte beachten Sie, ich will nicht zu den Code selbst Quelle verschleiern. Der angegebene Link ist irrelevant. Ich sehe nur keinen Grund, warum Klassennamen in der DLL-Datei gespeichert sind. Ich kann meine Klassen vor dem Build immer umbenennen, aber es ist keine sehr direkte Lösung.
Update2
Ich bin nicht mit Gemeinschaft verpflichten sich, diese qustion beim Schließen, da dies kein Duplikat ist. Und die Antwort wird in den Kommentaren von Tyler Gill gegeben. Danke an ihn und Schande über andere.
http://stackoverflow.com/questions/1025494/obfuscating-cc-code – Ram
"Ich möchte nicht, dass diese Zeichenfolge in der DLL-Datei angezeigt wird" Was ist der genaue Grund, warum Sie den Namen der Klasse zu denken versteckt sein. Das Kompilieren eines C++ Codes ist genug Verschleierung an sich! – Ram
@Ram Da die Namen der Klassen den Namen der Algorithmen entsprechen, die wir verwenden, um das Problem zu lösen. Wir wollen nicht, dass irgendjemand weiß, welche Algorithmen wir verwenden. – Mikhail