动态链接库dll实现函数共享,在未提供源代码的情况下也能调用内部函数。
- 静态调用
顾名思义,在程序开始运行时就载入dll。
#include "SCM.h" // 引用头文件
#pragma comment(lib,"ImageMosaic.lib") // 静态调用导入lib
#pragma comment(lib, "SCM_Method.lib") // 放在主程序目录
// 下面是函数声明,和dll中一致。
void ImagesMosaic(******);
void ImageUnit(******);
using namespace std;
int main // 主函数部分
{
// 可以调用上面两个函数,也可以调用SCM.h里声明的函数
}
- 动态调用
随时用,随时调,不必导入lib文件。
HMODULE hDll = LoadLibrary(TEXT("SCM_Method.dll")); // 加载dll文件
typedef void(*FunProc)(******);
if (hDll != NULL)
{
FunProc myFun = (FunProc)(GetProcAddress(hDll, "SCM")); // 得到要调用的函数,SCM即为函数名
if (myFun != NULL)
{
// 函数调用
cout << "dll调用成功" << endl << endl;
myFun(******); // 调用
}
else
cout << "函数调用失败" << endl;
}
else
cout << "未找到文件SCM_Method.dll" << endl;
FreeLibrary(hDll); // 释放dll