c++ - 如何阻止函数在 MS VS C++ 中导出?

标签 c++ windows visual-studio-2010 dll

因此,为了论证,我有一个名为 ExportedFunctions.cpp 的模块,其中包含几个用 DLL_EXPORT 修饰的函数(见下文)

#define DLL_EXPORT __declspec(dllexport)

ExportedFuncitons.cpp 包含一个 LibraryFunctions.h。该 header 中声明的函数在 LibraryFunctions.lib 中实现并静态链接到我的项目。

问题是,当我编译我的 DLL 并使用依赖项 walker (depends.exe) 查看它时,我不仅可以看到 ExportedFunctions.cpp 导出的函数,还可以看到 LibraryFunctions.h 中的所有函数。

即使我从 LibraryFunctions.h 中删除一些函数声明也是如此。它们一直显示为 DLL 入口点。我想隐藏它们。

最佳答案

想通了。

问题是 lib 文件正在导出函数。看起来无论 .h 文件在说什么,它都会导出。

幸运的是,我也是 LibraryFunctions 的所有者,所以我使用“Release - Static Lib”重新编译了它。在该配置中,我阻止了 dllexport 指令。

关于c++ - 如何阻止函数在 MS VS C++ 中导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8155544/

相关文章:

c++ - 类作用域常量 : const vs static const

c++ - 不完整类型的嵌套静态 constexpr。 C++ 是否有效?

c++ - 如何最好地对使用 boost::asio::yield_context 的类进行单元测试?

python - 如何防止其他进程随意更改文件夹?

c# - Process.Start - 如何将启动的可执行文件发送到后面 (C#)

c++ - 头文件/cpp 文件中定义的函数表现不同

windows - 通过间歇性网络连接复制文件

visual-studio-2010 - 如何将我的Sql Server CE 3.5 sdf数据库升级到Sql Server CE 4.0?

c# - Debug模式有效。 Release模式会产生大量错误!

visual-studio-2010 - Visual Studio 2010 局部变量历史