阻止.lib中的dllexport函数从DLL导出

时间:2013-03-13 16:14:07

标签: visual-c++ dll static-libraries dllexport declspec

我有一份我编译成静态库的axtls库的副本。我将它链接到我正在构建的DLL中,并且一些axtls函数(_MD5_Final_MD5_Init_MD5_Update)似乎是从我的DLL导出的。我正在试图弄清楚如何阻止这种情况发生。

我的DLL使用.def文件构建,该文件未列出任何这些功能。但是,它们都在axtls中声明为__declspec(dllexport),因此我怀疑这就是它们被导出的原因。

我想知道是否有办法阻止导出这些函数,使用.def文件或类似文件?我的DLL将被用作公共SDK的一部分,因此公开这样的内部函数并不是特别好。

我怀疑从axtls中的定义中删除__declspec(dllexport)可能会解决我的问题,但如果可以避免,我宁愿不修改上游代码。

1 个答案:

答案 0 :(得分:0)

每当你有一个静态LIB文件并在使用这个LIB文件构建的DLL中查看它的所有导出函数时,解决方案很简单:

重新编译不带__declspec(dllexport)的静态LIB项目,然后重新编译DLL项目。

使用DEF文件,您无法做到这一点。