刚学C++,请问高手,DLL动态显式调用是不是一次只能调用一个DLL函数?

2024-12-23 01:45:45
推荐回答(2个)
回答1:

DLL动态显式调用不是只能调用一个Dll函数。

1 dll是可以导出很多函数的。
2 dll调用分为2种,隐式加载 和显示加载。
3 隐式加载 就是在项目配置中 加入,lib 等导入库,然后dll考到你主调程序中即可。
4 更常见的是显式加载。 LoadLibrary + GetProcAddress 函数。
msdn的例子:
// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.

#include
#include

typedef int (__cdecl *MYPROC)(LPWSTR);

VOID main(VOID)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;

// Get a handle to the DLL module.

hinstLib = LoadLibrary(TEXT("myputs"));

// If the handle is valid, try to get the function address.

if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");

// If the function address is valid, call the function.

if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) (L"Message sent to the DLL function\n");
}

// Free the DLL module.

fFreeResult = FreeLibrary(hinstLib);
}

// If unable to call the DLL function, use an alternative.

if (! fRunTimeLinkSuccess)
printf("Message printed from executable\n");
}
不要说见笑之类的话,好好学,将来有天你也会成为大牛的

回答2:

在dll加载之后卸载之前,跟调用一般函数一样。
在其余时间段,会报错,内存寻址错误。
需要例子的话,给个邮箱!