MFC DLL问题
我创建了一个MFCDLL,类名为testdll,然后在CtestdllApp.h中建了一个函数intadd(inta,intb);在CtestdllApp.cpp中实现如...
我创建了一个MFC DLL,类名为testdll,然后在CtestdllApp.h中建了一个函数int add(int a,int b);在CtestdllApp.cpp中实现如下:
int CtestdllApp::add(int a, int b)
{
return a+b;
}
请问我调用了该DLL后如何能使用这个函数? 展开
int CtestdllApp::add(int a, int b)
{
return a+b;
}
请问我调用了该DLL后如何能使用这个函数? 展开
2个回答
展开全部
用GetProcAddress就行。关于具体细节,请参考我的另一个回答:)
http://zhidao.baidu.com/question/136396224.html
唉~ 算了,还是贴出来吧~
请看示例。
HINSTANCE hInstDLL = LoadLibrary(_T("a.dll"));
if(hInstDLL != NULL)
{
typedef VOID (*pFn)(VOID); // 这里定义函数指针,要根据你的实际情况
pFn pFunc = (pFn)GetProcAddress(hInstDll, "要加载的函数名");
if(pFunc != NULL)
pFunc(); // 调用DLL中的函数
else
AfxMessageBox(_T("函数加载失败"));
}
else
AfxMessageBox(_T("DLL加载失败"));
另外,如果还是出错的话,请确认一下DLL中导出函数的前缀:
extern "C" __declspec(dllexport)
希望能对你有所帮助
http://zhidao.baidu.com/question/136396224.html
唉~ 算了,还是贴出来吧~
请看示例。
HINSTANCE hInstDLL = LoadLibrary(_T("a.dll"));
if(hInstDLL != NULL)
{
typedef VOID (*pFn)(VOID); // 这里定义函数指针,要根据你的实际情况
pFn pFunc = (pFn)GetProcAddress(hInstDll, "要加载的函数名");
if(pFunc != NULL)
pFunc(); // 调用DLL中的函数
else
AfxMessageBox(_T("函数加载失败"));
}
else
AfxMessageBox(_T("DLL加载失败"));
另外,如果还是出错的话,请确认一下DLL中导出函数的前缀:
extern "C" __declspec(dllexport)
希望能对你有所帮助
展开全部
你程序是用dll函数可以两种方式,一个是隐式,一个是显式
隐式的话很容易,只要将导入函数关键字_declspec(dllimport)函数名等写到应用程序相应的头文件中就可以了。
显式的话要麻烦一些。在应用程序中用 LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己的dll调进来,dll的文件名即是上述函数的参数,然后再用GetProcAddress()获取想要使用的函数。
显式链接可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接无法作到的,所以显式链接具有更好的灵活性。
我推荐你用显式链接,用多了就不觉得麻烦了。
隐式的话很容易,只要将导入函数关键字_declspec(dllimport)函数名等写到应用程序相应的头文件中就可以了。
显式的话要麻烦一些。在应用程序中用 LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己的dll调进来,dll的文件名即是上述函数的参数,然后再用GetProcAddress()获取想要使用的函数。
显式链接可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接无法作到的,所以显式链接具有更好的灵活性。
我推荐你用显式链接,用多了就不觉得麻烦了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询