2

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

它打开“为空”消息框,认为它应该打开 Hello World 之一。我究竟做错了什么?

4

1 回答 1

4

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

extern "C" __declspec(dllexport) void HelloWorld()
于 2012-10-29T23:46:12.017 回答