我正在尝试使用LoadLibrary()动态加载DLL,该方法可以正常工作,但是我随后无法获取要调用的DLL中函数的地址。

DLL功能:(在CPP文件中)

_declspec(dllexport) void MyDllFunc()
{
    printf("Hello from DLL");
}


调用代码:

typedef void (*MyDllFuncPtr)();

int _tmain(int argc, _TCHAR* argv[])
{

    HINSTANCE LoadMe;
    LPCWSTR str = L"C:\\Users\\Tony\\Documents\\Visual Studio 2008\\Projects\\DLL Loading\\Release\\MyDll.dll";

    LoadMe = LoadLibrary(str);

    if(LoadMe != 0)
        printf("Successfully Loaded!\r\n");
    else
        printf("Loading Failed \r\n" );


    MyDllFuncPtr func;

    func = (MyDllFuncPtr)GetProcAddress(LoadMe, "MyDllFunc");

    if (func != NULL)
        func();

    FreeLibrary(LoadMe);

}


func返回NULL !!!

我究竟做错了什么?

这是一个Win32 Console项目。

最佳答案



extern "C" _declspec(dllexport) void MyDllFunc()

09-08 00:28