2

了解しました。私の単純なDLLHellowWorld関数です。

#include "stdafx.h"

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

単純なHelloWorldアプリから呼び出されません。

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;

「isnull」メッセージボックスを開きます。HelloWorldメッセージボックスを開く必要があると考えました。私は何が間違っているのですか?

4

1 に答える 1

4

他のコードが関数をロードできるようにするには、関数をDLLによってエクスポートする必要があることをマークする必要があります。__declspec(dllexport)またはモジュール定義ファイルを追加することで実行でき ます。

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