我很难理解是否可以防止从我正在构建的 DLL 中公开某些函数调用。我要隐藏的函数调用是由我正在构建到我自己制作的另一个 DLL 中的 sqlite3.dll 公开的调用。sqlite3.dll 公开了 5 个函数,其中一个在标题中如下所示:
SQLITE_API int SQLITE_STDCALL sqlite3_close(sqlite3*);
此处使用的宏在前面定义为:
/*
** Provide the ability to override linkage features of the interface.
*/
#ifndef SQLITE_EXTERN
# define SQLITE_EXTERN extern
#endif
#ifndef SQLITE_API
# define SQLITE_API
#endif
#ifndef SQLITE_CDECL
# define SQLITE_CDECL
#endif
#ifndef SQLITE_STDCALL
# define SQLITE_STDCALL
#endif
现在,我通过链接 sqlite3.lib 并包括 sqlite3.h(先前代码片段的来源)将 sqlite3.dll 构建到我的应用程序中。
我意识到我可以使用这些宏来实现我想要的。
我在自己的 dll 中公开函数:
/* module entry point */
int __declspec(dllexport) __stdcall load_properties(CAObjHandle context);
当我查看构建输出中可用的函数时,我从 sqlite 库中获得了我的函数+5 个函数。sqlite 中所有公开的函数都具有类似于我在上面为 close() 显示的声明结构。
有没有办法可以隐藏 sqlite 函数?是导致问题的 .lib 文件吗?该文件是自动生成的,所以我不确定里面有什么。