在C++中編寫庫時,我們需要將實現隱藏在頭文件中。但是我們需要包含源文件以使庫工作。但用戶可以很容易地在你的庫中找到你的源文件。那麼如何隱藏源文件呢?着名的圖書館如boost有什麼作用?如何阻止客戶端檢查庫中的源代碼
回答
您不能隱藏頭文件中的源代碼。唯一的辦法是把代碼放在你的.cpp文件中,這樣它就不能被查看。此外,如果速度是一個問題,您可以使函數inline
要求編譯器以這種方式優化它們。
STL並增加了源代碼,以便您可以閱讀它(但由於它們使用的命名約定而不易閱讀)。
如果客戶端可以找到您的源文件,隱藏實現有什麼用處?順便說一句,我不認爲我發現任何與源文件中的主要boost庫有關的實現。 – Blip
@VictorPrograss然後你看錯了地方。 boost的完整源代碼可以免費下載。 – drescherjm
@VictorPrograss,就是這一點。在將要在.hpp文件中分發模板代碼時,隱藏實現是沒有用的。 boost庫.hpp文件是實現。 –
如果您絕對必須分發源代碼,那麼您最好將代碼混淆。
但是,您爲什麼不希望客戶看到源代碼?如果你覺得自己放棄了太多,那麼就更多地爲它們收費,並提供一個可分發的庫。
對於混淆器,請參閱:https://stackoverflow.com/questions/1025494/obfuscating-c-c-code
- 1. 阻止查看源代碼
- 2. 如何防止客戶端阻塞外部資源?
- 3. 如何禁用瀏覽器從客戶端用戶端查看ASP源代碼?
- 4. System.Data.Services客戶端:GitHub上的源代碼
- 5. 發佈客戶端的源代碼
- 6. 如何阻止一個國家訪問使用客戶端代碼的網站
- 7. 客觀C阻止代碼
- 8. 客戶端可以查看服務器端PHP源代碼嗎?
- 9. ActiveMQ客戶端jar源代碼
- 10. 如何在GWT中引用客戶端使用的第三方庫源代碼?
- 11. 如何檢查imageview中的源代碼?
- 12. 如何檢查客戶端的NLS_LANG?
- 13. 如何擺脫客戶端的webpack源代碼?
- 14. 應該如何阻止需要阻止但不是由客戶端的服務?
- 15. 如何防止客戶端無法混淆Ioncube的代碼?
- 16. Java TCP客戶端發送被阻止?
- 17. Aerospike Java異步客戶端阻止
- 18. file_get_contents/curl阻止其他客戶端
- 19. 阻止用戶按角色查看流星客戶端腳本
- 20. ASP.NET AXD資源在客戶端被阻止?
- 21. 客戶端js:檢查文件編碼
- 22. 如何檢查客戶端Java版本?
- 23. 如何檢查WCF客戶端通道(服務)是否終止?
- 24. 如何從Web應用程序阻止特定的客戶端?
- 25. 如何檢查是否域阻止代理服務器 - 使用jQuery /客戶端腳本
- 26. 如何檢查客戶端JavaScript中的端口可用性?
- 27. 檢測客戶端中止請求Jersey
- 28. 如何檢查源代碼被禁止的話extGWT
- 29. 如何使用Javascript代碼查找客戶端的IP地址
- 30. 使用C#代碼檢查默認郵件客戶端
boost不會以任何方式隱藏源。它完全開放。 – drescherjm
以二進制形式分發庫+頭文件? (注意:人們仍然可以逆向工程)否則不可能。 – user2802841
如果你給他們的源,我沒有看到任何方式來隱藏它.. – drescherjm