GetProcAddress()为我的Hello World函数返回null

时间:2012-10-29 23:42:43

标签: c++ c winapi dll

好吧,所以我的简单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;

打开"为空" MessageBox,认为它应该打开Hello World。我做错了什么?

1 个答案:

答案 0 :(得分:4)

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

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