在Qt加载依赖Opencv开发的第三方库

4 篇文章 0 订阅

Qt加载依赖Opencv开发的第三方库:
Qt加载库有多种方法,其中:
一.加载静态库

客户只提供 : xx.dll

常规操作步骤:
1.打开“Depends.exe”工具,查看接口和依赖的库:

使用Depend Wolker查看库的接口和所依赖的库
如上图所示:
接口函数:CreateLayoutSolution
依赖的库:opencv_core248.dll、opencv_highgui248.dll、opencv_imgproc248.dll。

二.使用LoadLibrary加载库
1.把第三方库和依赖的opencv库,放到Qt编译目录中:
如:把PlateLayout.dll、opencv_core248.dll、opencv_highgui248.dll、opencv_imgproc248.dll放到Release目录中;

2.加载库:
下面展示一些 内联代码片

    QString dllName = "PlateLayout";
    std::wstring wlpstr = dllName.toStdWString();
    LPCWSTR lpcwStr = wlpstr.c_str();
    mDll = LoadLibrary(lpcwStr);
    if(mDll == NULL)
    {
        DWORD d = GetLastError();
        qDebug() << "load lib:PlateLayout error!" << d;
    }
    else
        qDebug() << "load ok";
//结果
load ok

LoadLibrary加载库,库名称为其参数;
GetLastError获得系统最后的错误结果:
193:找不到依赖的库

注意:
1.实际测试中使用msvc2015 64bit编译器,加载32位dll,会报193号错误,需要把第三方库和依赖的库改为64位编译器即可通过。

三:使用接口
直接给个例子:
下面展示一些 内联代码片

 typedef void(*FUNC)(char* sFilePath, vector<Point2f> vecPos, vector<Point2f> vecSize, int nMaxNum, int nSize, 
  int nSwitchNum, int nThreadNum, vector<SolutionInfo> &vecSolutions);
 FUNC CreateLayoutSolution = (FUNC)GetProcAddress(hInstance, "CreateLayoutSolution");
 if(NULL == CreateLayoutSolution)
 {
  return -1;
 }
 char* chImagePath = "H:\\项目\\排料算法\\outline.png";


// 调用函数接口
CreateLayoutSolution(chImagePath, vecPos, vecSize, 500, 30, 30, 8, vecSolutions);

四:释放库资源

FreeLibrary(hInstance);/释放库资源

//20200128调试记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值