隐藏依赖的DLL函数

时间:2015-08-19 19:25:42

标签: c dll sqlite cvi

我很难理解我是否可以防止在我正在构建的DLL中暴露某些函数调用。我要隐藏的函数调用是由sqlite3.dll公开的调用,我正在构建自己制作的另一个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文件吗?该文件是自动生成的,所以我不确定那里有什么。

1 个答案:

答案 0 :(得分:1)

我发现了答案。 sqlite3.dll被错误地指定为编译器的导出源。从sqlite3.dll中删除导出函数的指令纠正了这个问题。