【发布时间】:2011-11-16 16:56:40
【问题描述】:
因此,为了论证,我有一个名为 ExportedFunctions.cpp 的模块,其中有几个用 DLL_EXPORT 修饰的函数(见下文)
#define DLL_EXPORT __declspec(dllexport)
ExportedFuncitons.cpp 包含一个 LibraryFunctions.h。该标头中声明的函数在 LibraryFunctions.lib 中实现并静态链接到我的项目。
问题是,当我编译我的 DLL 并使用依赖项遍历器 (depends.exe) 查看它时,我不仅可以看到 ExportedFunctions.cpp 导出的函数,还可以看到 LibraryFunctions.h 中的所有函数。
即使我从 LibraryFunctions.h 中删除一些函数声明也是如此。它们一直显示为 DLL 入口点。我想隐藏它们。
【问题讨论】:
-
您是否尝试过使用命名空间 { }(即匿名命名空间)?虽然函数可能仍会被导出,但将无法调用它们,因为范围解析永远不会成功。
-
您是否有可能在调试模式下构建库和/或 Dependency Walker 正在拾取调试符号,这将允许它显示所有功能(无论是否导出) ?
标签: c++ windows visual-studio-2010 dll