为啥有的dll里没有导出函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥有的dll里没有导出函数?相关的知识,希望对你有一定的参考价值。

有个dll,用depend.exe打开,看不到任何的导出函数,但可以确定其配套的程序能使用其中的函数。
主程序如何调用这个dll中的函数?没有源代码,如何获得这种dll中的函数?

dll里如果把函数设为隐式导出,用depend或者execope是看不到的.
回楼上:
一是使用.def文件;
二是使用_declspec(dllexport)

对于第一种DEF方式,你可以设置导出dll的函数的NONAME属性,这样就给每个函数编了一个序号.外部程序要用dll的函数时,不直接调用函数名,而是用序号来调用.而且外部程序是无法直接看到dll函数名的,只能看到序号.
参考技术A 用到DLL不一定是函数,也可以是资源(resource),如:对话框模板,图标,光标,还有字符串。。。,既然没有什么函数导出,你也就没法用到它里面的函数,用depend.exe顶多能获得取函数的名字,但不能获得函数的参数,不知道参数是无法调用到这个函数 参考技术B 用dumpbin /exports 方法应该可以看到
如果没有的话,就是没有导出 错的DLL
参考技术C 引用:
dll里如果把函数设为隐式导出,用depend或者execope是看不到的

敢请教怎么设?

以上是关于为啥有的dll里没有导出函数?的主要内容,如果未能解决你的问题,请参考以下文章

MFC Dll 导出函数

windows中dll的"导出函数"是啥?"导入函数"又是啥?和普通的C语言函数有啥区别?

如何显示 DLL 可导出的函数

如何调用 DLL 的非导出函数?

在没有 .lib 文件的程序集中调用 DLL 的导出函数

如何隐藏 DLL 中的导出函数