找不到功能[错误127]

时间:2011-08-21 14:31:53

标签: visual-studio-2010 dll hook

我写了一个包含钩子程序的dll。我尝试在加载(成功)dll后调用此函数,但结果为0,GetLastError结果为127.我正在使用visual studio c ++,这是代码:

DLL:

#include <windows.h>

__declspec(dllexport) LRESULT CALLBACK CBTFrenk(int nCode, WPARAM wParam, LPARAM lParam){...}

MyApp的:

#include <Windows.h>

int _tmain(int argc, _TCHAR* argv[])
{   
    HINSTANCE hdll = LoadLibrary((LPCTSTR) L"C:\\Users\.....DllForHook.dll");
    wprintf(L"%d\n", GetLastError());
    HOOKPROC pfunc = (HOOKPROC)GetProcAddress(hdll, "CBTFrenk");
    wprintf(L"%d\n", GetLastError());
    HHOOK handleToAHook = SetWindowsHookEx(WH_CBT, pfunc, hdll, 0);
    return 0;
}

感谢您的合作。

编辑:

    00000000 characteristics
    4E515E9D time date stamp Sun Aug 21 21:38:05 2011
        0.00 version
           1 ordinal base
           1 number of functions
           1 number of names

    ordinal hint RVA      name

          1    0 00011005 ?CBTFrenk@@YGJHIJ@Z = @ILT+0(?CBTFrenk@@YGJHIJ@Z)

  Summary

        1000 .data
        1000 .idata
        2000 .rdata
        1000 .reloc
        1000 .rsrc
        4000 .text
       10000 .textbss

这是dumpbin的结果,为什么我的函数名称如此奇怪?

编辑:

    00000000 characteristics
    4E520C85 time date stamp Mon Aug 22 10:00:05 2011
        0.00 version
           1 ordinal base
           1 number of functions
           1 number of names

    ordinal hint RVA      name

          1    0 0001107D _CBTFrenk@12 = @ILT+120(_CBTFrenk@12)

  Summary

        1000 .data
        1000 .idata
        2000 .rdata
        1000 .reloc
        1000 .rsrc
        4000 .text
       10000 .textbss

我宣称CBTFrenk像extern“C”,并且称之为“_CBTFrenk @ 12”它的工作。

编辑:

我用代码:: block编写了dll代码,并使用dumpbin我看到导出的函数名是“CBTFrenk @ 12”,如果我尝试调用它,则找不到函数结果。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

使用DllForHook库尝试dumpbin以查看是否存在CBTFrenk函数。将CBTFrenk声明为extern“C”以防止C ++名称变形。

相关问题