7,540
社区成员
发帖
与我相关
我的任务
分享
CQQLoader cLoader;
cLoader.SetPortDir(…, …);
char* chStr = cLoader.GetPortDir(…);
#pragma once
//管理导入的DLL
class CQQLoader
{
private:
// 定义动态库中的函数指针
typedef void (*PFN_setPortDir(int *iPort, char *dbDir);
typedef char*(*PFN_getPortDir(int *iPort);
PFN_setPortDir m_setPortDir;
PFN_getPortDir m_getPortDir;
BOOL m_bInited; //是否动态库已经初始化
HMODULE m_hDllMod; //加载的动态库的句柄
public:
CQQLoader()
: m_bInited(FALSE), m_hDllMod(NULL)
{
if (m_hDllMod = LoadLibrary("SX_GPIO.dll"))//括号内DLL路径,可用绝对路径也可用相对路径
{
m_setPortDir= (PFN_setPortDir)::GetProcAddress(m_hDllMod, "SetPortDir");
m_getPortDir= (PFN_getPortDir)::GetProcAddress(m_hDllMod, "GetPortDir");
if (m_setPortDir&& m_getPortDir)
{
m_bInited = TRUE;
}
else
{
FreeLibrary(m_hDllMod);
m_hDllMod = NULL;
AfxMessageBox("Can't load SX_GPIO.dll!");
}
}
}
~CQQLoader()
{
if (m_hDllMod)
{
FreeLibrary(m_hDllMod);
m_hDllMod = NULL;
}
}
void SetPortDir(int *iPort, char *dbDir)
{
if (m_setPortDir)
{
return m_setPortDir(*iPort, *dbDir);
}
return FALSE;
}
char * GetPortDir(int *iPort)
{
if (m_getPortDir)
{
return m_getPortDir(*iPort);
}
return FALSE;
}
};
#pragma comment(lib, "SX_GPIO.lib")
void SetPortDir(int *iPort, char *dbDir)
bool GetPortDir(int *iPort)
#pragma comment(lib, "SX_GPIO.lib")
void SetPortDir(int *iPort, char *dbDir)
char * GetPortDir(int *iPort)
#pragma comment(lib, "SX_GPIO.lib")
SetPortDir(int *iPort, char *dbDir)
char * GetPortDir(int *iPort)