getProcAddress()为我的Hello World功能返回null



好吧,所以我的简单dll hellow world函数

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

我的简单Hello World App没有被调用:

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 One。我在做什么错?

您需要标记一个函数应由dll导出以使其他代码能够加载它。您可以通过添加__declSpec(dllexport)或模块定义文件来完成。

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

最新更新