DLL导出函数签名

时间:2014-06-17 01:45:36

标签: c++ windows dll easyhook

easyhook.h头文件有此函数声明。

typedef void __stdcall REMOTE_ENTRY_POINT(REMOTE_ENTRY_INFO* InRemoteInfo);

easyhook创作者说:

  

您注入的本机DLL必须将REMOTE_ENTRY_POINT导出为" NativeInjectionEntryPoint"。请查看easyhook.h以获取该导出的签名。

假设我的dll看起来像这样:

void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* InRemoteInfo);

INT WINAPI DllMain(HMODULE hDLL, DWORD Reason, LPVOID Reserved){    
    switch(Reason){
    case DLL_PROCESS_ATTACH:
    case DLL_PROCESS_DETACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
        break;
    }
    return TRUE;
}

void _stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* InRemoteInfo)(){

}

我的dll应该是什么样的?

对于反馈,我想知道我是否已经清楚地说出了这个问题,以便得到回答。我的最后一个被投了票,我不知道为什么。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我知道这个问题已经过时了,但由于我也遇到了这个问题,并且花了一些时间修复,我在这里回答。

首先,正如Harry Johnston所说,你应该添加__declspec(dllexport)。 其次,如果您的项目是C ++项目,那么您也应该添加extern "C"。 因此,您的方法定义应如下所示:

extern "C" __declspec(dllexport) void __stdcall NativeInjectionEntryPoint(REMOTE_ENTRY_INFO* InRemoteInfo)
{
    // ...
}