//DLL Code
#include <stdio.h>
extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf("Hello from DLL !\n");
}
}
//Program Accessing DLL
#include<windows.h>
#include<iostream>
#include<conio.h>
typedef void (*DisplayHelloFromDLLFuncPtr)();
using namespace std;
int main()
{
HINSTANCE hGetProcIDDLL = LoadLibrary("L:\\C_Learning\\Library\\MyLib\\Debug\\MyLib.dll");
if (!hGetProcIDDLL)
{
cout << "\nCould Not The Library";
return EXIT_FAILURE;
}
else
{
cout << "\nDLL is Loaded";
}
DisplayHelloFromDLLFuncPtr LibMainEntryPoint=(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");
if (!DisplayHelloFromDLL)
{
cout << "\nCould not locate the function";
return EXIT_FAILURE;
}
cout << DisplayHelloFromDLL();
return EXIT_SUCCESS;
_getch();
return 0;
}
代码执行到其他条件下的cout语句。
编译DLL中的函数时收到错误。
收到错误'DisplayHelloFromDLL':未声明的标识符
Ran Depends.exe确认DLL地址空间中的功能可用性。
DLL和示例程序使用32位环境进行编译。
6.程序的唯一目的是调用函数C DLL并打印Hello From DLL消息。
有什么建议吗?
答案 0 :(得分:1)
您将变量命名为&#34; DisplayHelloFromDLL&#34;函数指针为&#34; LibMainEntryPoint&#34;:
DisplayHelloFromDLLFuncPtr LibMainEntryPoint=(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");
但是您尝试使用不同的名称(DisplayHelloFromDLL):
if (!DisplayHelloFromDLL) ...
与变量名一致,代码应该有效。 将其更改为:
DisplayHelloFromDLLFuncPtr DisplayHelloFromDLL =(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL,&#34; DisplayHelloFromDLL&#34;);