关于C++加载DLL文件 用的LoadLibrary方法的问题
答案:3 悬赏:0 手机版
解决时间 2021-03-19 14:19
- 提问者网友:记得曾经
- 2021-03-18 17:18
关于C++加载DLL文件 用的LoadLibrary方法的问题
最佳答案
- 五星知识达人网友:我住北渡口
- 2021-03-18 17:52
#pragma comment(lib,"TestDLL.lib")
_declspec(dllimport) int clFun(int a, int b);
void main()
{
int a = 1,b = 2,c =0;
c = clFun(a,b);
}
void main()
{
int a = 1,b = 2,c =0;
//定义一个函数指针
typedef int (* Any_name)(int param1, int param2);
//定义一个函数指针变量
Any_name pfFuncInDll = NULL;
//加载dll
HINSTANCE hinst=LoadLibrary(L"TestDLL.dll");
if ( hinst != NULL )
{
//找到dll的clFun函数
pfFuncInDll = (Any_name)GetProcAddress(hinst, "clFun");
//调用dll里的函数
if (pfFuncInDll != NULL )
{
c = pfFuncInDll(a,b);
}
FreeLibrary(hinst);
}
}
全部回答
- 1楼网友:醉吻情书
- 2021-03-18 18:52
可以参考如下语法:
HINSTANCE hDLL; // DLL句柄
typedef int __stdcall (*DLLFUN)(int a, int b);
DLLFUN Dll_clFun;
//读取:
if(hDLL == NULL)
hDLL=LoadLibrary((LPCTSTR)"TestDLL.dll");
if(hDLL)
{
Dll_clFun =(DLLFUN)GetProcAddress(hDLL,"clFun");
}
else
{
ShowMessage("加载DLL失败,程序退出");
}
//释放:
if(hDLL)
{
FreeLibrary(hDLL); // 卸下DLL
hDLL = NULL;
}追问DLLFUN Dll_clFun;报错。。DLLFUN未声明的 这是什么?
typedef int __stdcall (*DLLFUN)(int a, int b); 报错。。语法错误:“(”追答详细错误是在第几行呢?
试试把:
HINSTANCE hDLL; // DLL句柄
改成
HINSTANCE hDLL=NULL ; // DLL句柄
HINSTANCE hDLL; // DLL句柄
typedef int __stdcall (*DLLFUN)(int a, int b);
DLLFUN Dll_clFun;
//读取:
if(hDLL == NULL)
hDLL=LoadLibrary((LPCTSTR)"TestDLL.dll");
if(hDLL)
{
Dll_clFun =(DLLFUN)GetProcAddress(hDLL,"clFun");
}
else
{
ShowMessage("加载DLL失败,程序退出");
}
//释放:
if(hDLL)
{
FreeLibrary(hDLL); // 卸下DLL
hDLL = NULL;
}追问DLLFUN Dll_clFun;报错。。DLLFUN未声明的 这是什么?
typedef int __stdcall (*DLLFUN)(int a, int b); 报错。。语法错误:“(”追答详细错误是在第几行呢?
试试把:
HINSTANCE hDLL; // DLL句柄
改成
HINSTANCE hDLL=NULL ; // DLL句柄
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯