//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;
}
代码执行到 else 条件下的 cout 语句。
为 DLL 中的函数编译时收到错误。
收到错误“DisplayHelloFromDLL”:未声明的标识符
Ran Depends.exe 确认 DLL 地址空间中的函数可用性。
DLL 和示例程序是在 32 位环境下编译的。
6.程序的唯一目的是调用函数C DLL并打印Hello From DLL消息。
有什么建议么 ?
您将保存“DisplayHelloFromDLL”函数指针的变量命名为“LibMainEntryPoint”:
DisplayHelloFromDLLFuncPtr LibMainEntryPoint=(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");
但是然后您尝试使用不同的名称(DisplayHelloFromDLL)使用它:
if (!DisplayHelloFromDLL) ...
与变量名称保持一致,代码应该可以工作。将其更改为:
DisplayHelloFromDLLFuncPtr DisplayHelloFromDLL =(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句