typedef int (*getradardata)(const char *, float fHeight, char *, const char *);
typedef int (*getradardataLevel)(const char *, int iLevel, char *, const char *);
typedef int (*add)(int,int);
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
//Factory * pFactory = new ConcreteFactory();
//pFactory->CreateProduct();
//delete pFactory;
{
HMODULE hdll = LoadLibrary(_T("PictureFactoryPlugin.dll"));
getradardata func = (getradardata)GetProcAddress(hdll, "GetDataByHeight");
getradardataLevel funcLevel = (getradardataLevel)GetProcAddress(hdll, "GetDataByLevel");
add funcAdd = (add)GetProcAddress(hdll, "addtest");
char data[460*460*4];
func("CAP.bin.bz2", 5.0, data, 0);
int i = funcAdd(2, 4);
return 0;
}
}
system("PAUSE");
return nRetCode;
}
typedef int (*getradardataLevel)(const char *, int iLevel, char *, const char *);
typedef int (*add)(int,int);
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
_tprintf(_T("Fatal Error: MFC initialization failed\n"));
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
//Factory * pFactory = new ConcreteFactory();
//pFactory->CreateProduct();
//delete pFactory;
{
HMODULE hdll = LoadLibrary(_T("PictureFactoryPlugin.dll"));
getradardata func = (getradardata)GetProcAddress(hdll, "GetDataByHeight");
getradardataLevel funcLevel = (getradardataLevel)GetProcAddress(hdll, "GetDataByLevel");
add funcAdd = (add)GetProcAddress(hdll, "addtest");
char data[460*460*4];
func("CAP.bin.bz2", 5.0, data, 0);
int i = funcAdd(2, 4);
return 0;
}
}
system("PAUSE");
return nRetCode;
}
本文介绍了一个C++程序如何加载动态链接库并从中获取函数指针的过程。该程序通过使用Windows API函数LoadLibrary和GetProcAddress来实现动态链接库(PictureFactoryPlugin.dll)的加载,并调用了其中的GetDataByHeight、GetDataByLevel及addtest三个函数。
3万+

被折叠的 条评论
为什么被折叠?



