方法一:动态调用(仅需.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库的路径及依赖项