<分区>
我想知道(出于代码安全原因)- c++ 库的用户是否可以使用库的类、函数调用、他不知道的变量,因为他只有一个库的头文件?
如果他通过在库文件中查找文本来猜测类名和调用名,他能否编写一个允许他使用代码的头文件?
标签 c++
<分区>
我想知道(出于代码安全原因)- c++ 库的用户是否可以使用库的类、函数调用、他不知道的变量,因为他只有一个库的头文件?
如果他通过在库文件中查找文本来猜测类名和调用名,他能否编写一个允许他使用代码的头文件?
最佳答案
首先,头文件只是为了方便。没有什么能阻止用户使用库的文档重新创建头文件(或者甚至只是通过对库进行逆向工程),因此也没有什么能阻止他们添加库的公共(public)接口(interface)中从头文件中遗漏的部分。
但是 header 应该包含整个公共(public)接口(interface),否则它有什么意义呢?此外,库通常应设计成任何else 都具有内部链接并且不被导出。虽然并非不可能,但使用它们更加困难,因为运行时(或静态)链接器不会将您手工制作的声明解析为引用库私有(private)部分中的符号。在正常使用中,它们被认为是隐藏的。
这当然不是“安全”措施,因为最终任何东西都可以被黑客入侵,但图书馆的内部结构通常被认为是安全隐藏起来的,以方便访问。
如果您想阻止坏人获得对您图书馆内部结构的任何访问权限,您必须做几件事:
关于c++ - 是否可以使用不在 header 中的 C++ 库代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53886343/