我有一個C++項目在Visual Studio 2010下編譯成一個dll。我在我的項目中定義了幾個私有的特定於實現的類,例如CMyClass
。這個類不是從dll或任何接口函數中導出的。但是,當我檢查生成的dll文件時,存在一個字符串「CMyClass」。這是一個發佈版本,我不希望這個字符串出現在dll文件中。這個DLL被髮送給客戶,我希望我的項目中使用的所有名稱都被從dll文件中剝離出來,因此沒有人能夠獲得關於我們在dll中使用哪些算法的簡單線索。從二進制dll文件中刪除C++類名稱
我使用Release配置。在項目屬性中,關閉鏈接器選項卡下的「生成調試信息」選項,C/C++選項卡下的「調試信息格式」設置爲「程序數據庫(/ Zi)」。我試圖爲「調試信息格式」設置空字符串,但沒有成功。
在dll中找到的字符串看起來像[email protected]@
,位於dll文件的最後。這是dll文件中唯一出現的「CMyClass」字符串。然而,這個字符串幾乎是我所有的內部類。
如何擺脫這些提及?
更新
請注意,我不想混淆源代碼本身。提供的鏈接無關緊要。我只是沒有看到類名存儲在dll文件中的原因。我可以在構建之前總是重命名我的類,但這不是非常直接的解決方案。
UPDATE2
我不與社區同意關閉這個qustion,因爲這不是重複。答案在Tyler Gill的評論中給出。感謝他和其他人的恥辱。
http://stackoverflow.com/questions/1025494/obfuscating-cc-code – Ram 2013-02-14 07:23:10
「我不希望這個字符串出現在dll文件中」你爲什麼認爲這個類的名字的確切原因是什麼被隱藏。編譯C++代碼本身就足夠模糊了! – Ram 2013-02-14 07:29:55
@Ram因爲類的名稱與我們用來解決問題的算法的名稱相對應。我們不希望任何人知道我們使用什麼算法。 – Mikhail 2013-02-14 07:32:56