dll函数怎么知道自己是通过C++的.h文件调用的函数通过字符串的方式

问题描述:

dll函数怎么知道自己是通过C++的.h文件调用的函数通过字符串的方式(vb)动态调用的,这两者的机制的差别是什么?

如果是动态调用的,那么之前肯定会调用loadlibrary,你可以通过堆栈上是不是有这个函数来判断!

dll不知道;机制无差别;
无论,你是c/c++,还是vb,最终都会被系统解释称系统dll loader可以识别的二进制;
或者你可以理解成,c/c++,vb,或其他任何一种语言,包括脚本语言,在调用dll时,是无差别的,都通过系统的调用(native)来实现的。

C++ 通过头文件调用需要相应的lib文件,lib是包含一些函数入口地址已经变量的声明等。编译的时候会根据lib里面信息链接到dll对应的接口函数上

C++也可以动态的方式调用dll,此时只需要提供dll文件即可(也就是你说的后者的方式,加载dll,然后查询某个接口,然后调用)

区别就在于调用的代码不一样,效果是完全等同的!

dll有动态加载和静态加载两种方式。