使用静态lib c++隐藏类实现
Hide class implementation using static lib c++
我正在处理一个项目,我需要创建一个类,我将使用静态库共享该类。到目前为止,我在.cpp文件中编写了实现,并且只共享了de.h和.lib文件。如果我在另一个项目中使用这些,并尝试调试使用我的类的东西,我可以看到.cpp文件中编写的完整实现。我有什么办法可以隐藏实现吗?
如果我在另一个项目中使用这些,并且我试图调试使用我的类的东西,我可以看到.cpp文件中编写的完整实现。我有什么办法可以隐藏实现吗?
您只能在.cpp
中看到实现,因为:
.lib
具有未剥离的调试信息.cpp
文件恰好位于调试信息中提到的位置(即.lib
中没有.cpp
的副本(
如果删除上述任何条件,您将无法在调试器中看到源。
您可以使用pimpl习语来隐藏实现。通过切换到pimpl习惯用法,您可以随时更改实现,而不会影响客户端使用库的方式。
但对于您的问题,如果您只分发头和库文件,那么其他人将无法看到您的实现。库已在您的计算机中嵌入了有关源文件的信息。这就是为什么你可以这样调试。
相关文章:
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- 我可以为 C++ 类提供不完整的标头以隐藏实现详细信息吗?
- 使用TDD时隐藏文件访问实现详细信息
- 隐藏变异模板实现
- 隐藏PIMPL-Objects拥有的成员的实现
- 隐藏C 接口的特定实现
- 在仅标头库中隐藏实现
- 使用指针(PIMPL IDIOM)隐藏实现
- 是否可以隐藏模板类的实现
- 从其接口隐藏类实现
- 使用私有继承来隐藏实现是个好主意吗
- 如何在C++共享库中隐藏业务对象的实现细节并提供接口
- 通过前向声明隐藏实现
- 扩展类以进行调试:公共API、隐藏实现或其他什么
- 通过内部指针隐藏实现详细信息
- 循环包含在c++头文件中隐藏实现细节的技巧
- 通过减少填充头的数量来隐藏实现细节
- 从工厂函数返回 std::unique_ptr<T> 创建纯虚拟接口的完全隐藏实现
- 成员函数的隐藏实现(如静态全局函数)
- 如何隐藏实现助手模板