mfc 调用动态链接库的几种方式

2025-08-20 03:25:21

方法一:动态调用(仅需.dll)

动态调用是显示调用。例子:

bool m_bLoaded = false;//是否加载成功

HMODULE m_hModule;

bool LoadDll()//加载dll

{

CString strPath = _T("..//XX//YY.dll");//XX路径下的YY.dll

m_hModule = LoadLibrary(strPath);

if (!m_hModule)

{

AfxMessageBox(_T("dll加载动态链接库失败"));

return false;

}

m_bLoaded = true;//加载动态链接库

return true;

}

void FreeDll()//卸载dll

{

if (m_hModule)

{

FreeLibrary(m_hModule);

m_hModule = NULL;

OutputDebugString(_T("dll-释放成功\r\n"));

}

}

void lineExtra(cv::Mat &src, int value1, int ¢er_x, int ¢er_y)

{

if (!m_hModule)

{

ASSERT(m_hModule);

return;

}

typedef void(*pFunPtr)(cv::Mat &sr1, int value11, int ¢er_x1, int ¢er_y1);

pFunPtr pfunPtr;//列为x 行为y 纵向为Z

pfunPtr = (pFunPtr)GetProcAddress(m_hModule, "lineExtra");

if (!pfunPtr)

{

ASSERT(pfunPtr);

FreeDll();

return;

}

return pfunPtr(src, value1, center_x, center_y);

}

可以修改XX.dll的名称,只需要给XX.dll重新命名为YY.dll,在调用时调用YY.dll即可

方法二:静态调用(同时需要.h, .lib, .dll缺一不可)

静态调用有两种方式

方式1:代码

该方式只需要三步:

1. 将dll lib 放入bin文件夹下,将.h放工程目录下

2.将.h添加到工程中

3.添加如下语句,即可调用对应的dll中函数

#include "createYY.h"

#pragma comment(lib, "..//bin//YY.lib")//路径为lib放置的路径

方式2:配置属性

include文件路径:

lib--添加lib库的路径及依赖项