无法从 C DLL 调用函数

Not able to call the function from C DLL

//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;


}
  1. 代码执行到else条件下的cout语句。

  2. 为 DLL 中的函数编译时收到错误。

  3. 收到错误'DisplayHelloFromDLL':未声明的标识符

  4. 运行 Depends.exe 确认函数在 DLL 地址 space.

  5. 中的可用性
  6. DLL和示例程序是在32位环境下编译的。

    6.Program 唯一目的是调用函数 C DLL 并打印 Hello From DLL 消息。

    有什么建议吗?

您将保存 "DisplayHelloFromDLL" 函数指针的变量命名为 "LibMainEntryPoint":

DisplayHelloFromDLLFuncPtr LibMainEntryPoint=(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");

但随后您尝试使用不同的名称 (DisplayHelloFromDLL):

if (!DisplayHelloFromDLL) ...

与变量名保持一致,代码应该可以运行。 将其更改为:

DisplayHelloFromDLLFuncPtr DisplayHelloFromDLL=(DisplayHelloFromDLLFuncPtr)GetProcAddress(hGetProcIDDLL, "DisplayHelloFromDLL");