【问题标题】:GetProcAddress() returning null for my Hello World functionGetProcAddress() 为我的 Hello World 函数返回 null
【发布时间】:2012-10-29 23:42:42
【问题描述】:

好的,我的简单 DLL Hellow World 函数

#include "stdafx.h"

extern "C" void HelloWorld()
{
   MessageBox( NULL, TEXT("Hello World"), 
            TEXT("In a DLL"), MB_OK);
}

我的简单 hello world 应用没有调用:

case IDM_ABOUT:

            hinstDLL = LoadLibrary(L"phantasyhook.dll");
            if (hinstDLL != NULL)
            {
                HelloWorld = (FARPROC) GetProcAddress(hinstDLL, "HelloWorld");

                if (HelloWorld != NULL)
                    HelloWorld();

                else
                    MessageBox(NULL, L"is null", L"dll Error", MB_OK);

                FreeLibrary(hinstDLL);
            }

            break;

它打开“is null”消息框,认为它应该打开 Hello World 消息框。我做错了什么?

【问题讨论】:

  • 我相信你错过了__declspec(dllexport)

标签: c++ c winapi dll


【解决方案1】:

您需要标记一个函数应该由 DLL 导出,以便其他代码能够加载它。您可以添加__declspec(dllexport)module definition file

extern "C" __declspec(dllexport) void HelloWorld()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多