QT中调用DLL文件

动态链接库英文为DLL,DLL提供了一种方法,使工程可以调用已经封装好的函数,从而实现代码块的重复使用和封装。

HINSTANCE hfilter = LoadLibraryA("meanFilter_dll.dll");//should include 
typedef void(*pFilter)(char* inputFile); //函数指针定义
pFilter meanFilter = (pNRSeg)GetProcAddress(hfilter, "meanFilter_dll"); 
meanFilter(argv[1]);//指定图片路径
FreeLibrary(hfilter);

上述对DLL文件调用,属于通用调用方法,在基于QT, wxWidgets等库开发软件中,都这可以用上述代码块进行调用。

生成DLL文件的方法有很多,本文提供一种可行方式,并用CMAKE对该工程管理。

//meanFilter.h定义
//基于ITK库滤波算法
#include 
#include 
#include 
#include 

#ifdef OCTSeg_EXPORTS
#define OCTSeg_API __declspec(dllexport)
#else
#define OCTSeg_API __declspec(dllimport)
#endif

extern "C" OCTSeg_API void meanFilter_dll(char* inputFilename);

在CMakeLists.txt中加入代码:

//meanFilter.cpp实现中值滤波,可以参考ITK文档
ADD_LIBRARY(meanFilter_dll SHARED meanFilter.cpp) 
TARGET_LINK_LIBRARIES(meanFilter_dll ${ITK_LIBRARIES} )

你可能感兴趣的:(ITK,wxWidgets,QT)