Dev-C++ 和 Detours 编译错误
Posted
技术标签:
【中文标题】Dev-C++ 和 Detours 编译错误【英文标题】:Dev-C++ and Detours compiling error 【发布时间】:2010-06-05 15:14:58 【问题描述】:正如标题所说,我正在尝试使用 Detours 使用 Dev-C++ 编译一个简单的 DLL,但出现此错误:
syntax error before token '&'
在这行:
DetourAttach(&(PVOID &)trueMessageBox, hookedMessageBox)
DetourDetach(&(PVOID &)trueMessageBox, hookedMessageBox)
完整的代码是
#include <windows.h>
#include <detours.h>
#pragma comment( lib, "Ws2_32.lib" )
#pragma comment( lib, "detours.lib" )
#pragma comment( lib, "detoured.lib" )
int (WINAPI * trueMessageBox)(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) = MessageBox;
int WINAPI hookedMessageBox(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
LPCSTR lpNewCaption = "You've been hijacked";
int iReturn = trueMessageBox(hWnd, lpText, lpNewCaption, uType);
return iReturn;
BOOL WINAPI DllMain( HINSTANCE, DWORD dwReason, LPVOID )
switch ( dwReason )
case DLL_PROCESS_ATTACH:
DetourTransactionBegin();
DetourUpdateThread( GetCurrentThread() );
DetourAttach(&(PVOID &)trueMessageBox, hookedMessageBox)
DetourTransactionCommit();
break;
case DLL_PROCESS_DETACH:
DetourTransactionBegin();
DetourUpdateThread( GetCurrentThread() );
DetourDetach(&(PVOID &)trueMessageBox, hookedMessageBox)
DetourTransactionCommit();
break;
return TRUE;
【问题讨论】:
包含是好的,但我不知道如何在此处显示标签 :)不,不要使用前置标签,使用正确的标记。编辑器中有一个按钮可以为您执行此操作(突出显示代码,按下按钮),或者您可以手动将每行缩进四个空格。 你可以从抛弃 Dev-C++ 开始。说真的,为什么人们认为使用 5 年未维护的 IDE(即使它被维护也很糟糕)是一个好主意?有几个 好 的免费 IDE 可用。为什么你要使用only从未真正起作用的那个? Code::Blocks 的新主要版本刚刚问世 - 在各方面都优于 DevC++ - 请参阅 codeblocks.org。 【参考方案1】:
这些行上没有分号。
不知道走弯路,我打算查询 typecast 到 PVOID &
,这看起来很奇怪 - 但网上有几个例子,所以看起来很合理。
【讨论】:
【参考方案2】:不应该是LPVOID
而不是PVOID
吗?
【讨论】:
它没有回答问题,它没有解决问题,它应该是一个评论,它完全没有必要,因为现在LPVOID和PVOID是一回事。但仍然 > -1... 虚拟投票。以上是关于Dev-C++ 和 Detours 编译错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 Dev-C++5.11 在 C++ 程序中编译的错误文件