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 &amp;,这看起来很奇怪 - 但网上有几个例子,所以看起来很合理。

【讨论】:

【参考方案2】:

不应该是LPVOID而不是PVOID吗?

【讨论】:

它没有回答问题,它没有解决问题,它应该是一个评论,它完全没有必要,因为现在LPVOID和PVOID是一回事。但仍然 > -1... 虚拟投票。

以上是关于Dev-C++ 和 Detours 编译错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Dev-C++5.11 在 C++ 程序中编译的错误文件

C++ Detours 3.0 express on MVS 2012 错误“找不到标识符”

MS Detours - DetourAttach 失败

Dev C ++中的编译错误错误[重复]

Dev-C++和xcode编译器的不同输出[重复]

Dev-C++5.11安装教程