使用静态lib c++隐藏类实现

Hide class implementation using static lib c++

本文关键字:隐藏 实现 c++ lib 静态      更新时间:2024-05-10

我正在处理一个项目,我需要创建一个类,我将使用静态库共享该类。到目前为止,我在.cpp文件中编写了实现,并且只共享了de.h和.lib文件。如果我在另一个项目中使用这些,并尝试调试使用我的类的东西,我可以看到.cpp文件中编写的完整实现。我有什么办法可以隐藏实现吗?

如果我在另一个项目中使用这些,并且我试图调试使用我的类的东西,我可以看到.cpp文件中编写的完整实现。我有什么办法可以隐藏实现吗?

您只能在.cpp中看到实现,因为:

  1. .lib具有未剥离的调试信息
  2. .cpp文件恰好位于调试信息中提到的位置(即.lib中没有.cpp的副本(

如果删除上述任何条件,您将无法在调试器中看到源。

您可以使用pimpl习语来隐藏实现。通过切换到pimpl习惯用法,您可以随时更改实现,而不会影响客户端使用库的方式。

但对于您的问题,如果您只分发头和库文件,那么其他人将无法看到您的实现。库已在您的计算机中嵌入了有关源文件的信息。这就是为什么你可以这样调试。