网站流量用完了,网站报价表对比表怎么做,网站视频下载windows,重庆建网站要多少钱在没有.h和.lib文件时#xff0c;需要函数指针和WIN32 API函数 LoadLibrary, GetProcAddress 和FreeLibrary 只需要.dll文件即可#xff08;将.dll文件置入工程目录中#xff09;。 LoadLibrary 进程调用 LoadLibrary以显式链接到 DLL。 如果函数执行成功#xff0c;它会将…在没有.h和.lib文件时需要函数指针和WIN32 API函数 LoadLibrary, GetProcAddress 和FreeLibrary 只需要.dll文件即可将.dll文件置入工程目录中。 LoadLibrary 进程调用 LoadLibrary以显式链接到 DLL。 如果函数执行成功它会将指定的 DLL 映射到调用进程的地址空间中并返回该 DLL 的句柄。 此句柄可以与其他函数如 GetProcAddress 和FreeLibrary一起在显式链接中使用。 LoadLibrary 将尝试使用用于隐式链接的相同搜索序列来查找 DLL。 如果系统无法找到所需的 DLL 或者入口点函数返回 FALSE 则 LoadLibrary 将返回 NULL。 如果对 LoadLibrary 的调用所指定的 DLL 模块已映射到调用进程的地址空间中 则该函数将返回该 DLL 的句柄并递增模块的引用数。 如果 DLL 具有入口点函数则操作系统将在调用 LoadLibrary 的线程的上下文中调用此函数。 如果由于以前调用了 LoadLibrary但没有相应地调用 FreeLibrary 函数从而导致已经将 DLL 附加到进程则不会调用此入口点函数。 如果 Windows 无法加载 DLL则进程会尝试从错误中恢复。 例如进程会通知用户所发生的错误并要求用户指定 DLL 的其他路径。 GetProcAddress 显式链接到 DLL 的进程调用 GetProcAddress 来获取 DLL 导出函数的地址。 使用返回的函数指针调用 DLL 函数。 GetProcAddress 将由 LoadLibrary或 GetModuleHandle 返回的DLL 模块句柄和要调用的函数名或函数的导出序号用作参数。 由于是通过指针调用 DLL 函数并且没有编译时类型检查需确保函数的参数是正确的以便不会超出在堆栈上分配的内存和不会导致访问冲突。 帮助提供类型安全的一种方法是查看导出函数的函数原型并创建函数指针的匹配 typedef。 FreeLibrary 处理链接到 DLL 的显式调用函数FreeLibrary 当不再需要 DLL 模块。 此函数递减模块的引用数如果引用数为零此函数便从进程的地址空间中取消模块的映射。 #include iostream
#include windows.h //使用函数和某些特殊变量
typedef void (*DLLFunc)(int,int); //确定调用函数的形参
int main()
{DLLFunc dllFunc;HINSTANCE hInstLibrary LoadLibrary(sub.dll);//加载.dllif (hInstLibrary NULL){FreeLibrary(hInstLibrary);}dllFunc (DLLFunc)GetProcAddress(hInstLibrary, sub);//第二个参数为要调用的函数名称if (dllFunc NULL){FreeLibrary(hInstLibrary);}dllFunc(5,4);FreeLibrary(hInstLibrary);return(1);
}