[英]Compiling GINA.dll for 64bit errors
在為項目開發自定義Windows GINA.DLL時,碰巧在開發和測試32bit和代碼后需要在32bit和64bit平台上都構建它,我嘗試為64bit平台構建它並生成以下錯誤:
Error 7 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 3 Gina
Error 8 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 3 Gina
Error 9 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 3 Gina
Error 10 error C2146: syntax error : missing ';' before identifier 'RealWlxActivateUserShell' d:\projects\prostick\prostick\gina\Trampulim.cpp 3 Gina
Error 11 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 3 Gina
Error 12 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 4 Gina
Error 13 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 4 Gina
Error 14 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 4 Gina
Error 15 error C2146: syntax error : missing ';' before identifier 'RealWlxDisplayLockedNotice' d:\projects\prostick\prostick\gina\Trampulim.cpp 4 Gina
Error 16 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 4 Gina
Error 17 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 5 Gina
Error 18 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 5 Gina
Error 19 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 5 Gina
Error 20 error C2146: syntax error : missing ';' before identifier 'RealWlxDisplaySASNotice' d:\projects\prostick\prostick\gina\Trampulim.cpp 5 Gina
Error 21 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 5 Gina
Error 22 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 6 Gina
Error 23 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 6 Gina
Error 24 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 6 Gina
Error 25 error C2146: syntax error : missing ';' before identifier 'RealWlxGetConsoleSwitchCredentials' d:\projects\prostick\prostick\gina\Trampulim.cpp 6 Gina
Error 26 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 6 Gina
Error 27 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 7 Gina
Error 28 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 7 Gina
Error 29 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 7 Gina
Error 30 error C2146: syntax error : missing ';' before identifier 'RealWlxGetStatusMessage' d:\projects\prostick\prostick\gina\Trampulim.cpp 7 Gina
Error 31 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 7 Gina
Error 32 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 8 Gina
Error 33 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 8 Gina
Error 34 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 8 Gina
Error 35 error C2146: syntax error : missing ';' before identifier 'RealWlxIsLockOk' d:\projects\prostick\prostick\gina\Trampulim.cpp 8 Gina
Error 36 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 8 Gina
Error 37 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 9 Gina
Error 38 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 9 Gina
Error 39 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 9 Gina
Error 40 error C2146: syntax error : missing ';' before identifier 'RealWlxIsLogoffOk' d:\projects\prostick\prostick\gina\Trampulim.cpp 9 Gina
Error 41 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 9 Gina
Error 42 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 10 Gina
Error 43 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 10 Gina
Error 44 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 10 Gina
Error 45 error C2146: syntax error : missing ';' before identifier 'RealWlxLoggedOnSAS' d:\projects\prostick\prostick\gina\Trampulim.cpp 10 Gina
Error 46 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 10 Gina
Error 47 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 11 Gina
Error 48 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 11 Gina
Error 49 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 11 Gina
Error 50 error C2146: syntax error : missing ';' before identifier 'RealWlxLoggedOutSAS' d:\projects\prostick\prostick\gina\Trampulim.cpp 11 Gina
Error 51 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 11 Gina
Error 52 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 12 Gina
Error 53 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 12 Gina
Error 54 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 12 Gina
Error 55 error C2146: syntax error : missing ';' before identifier 'RealWlxLogoff' d:\projects\prostick\prostick\gina\Trampulim.cpp 12 Gina
Error 56 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 12 Gina
Error 57 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 13 Gina
Error 58 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 13 Gina
Error 59 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 13 Gina
Error 60 error C2146: syntax error : missing ';' before identifier 'RealWlxNetworkProviderLoad' d:\projects\prostick\prostick\gina\Trampulim.cpp 13 Gina
Error 61 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 13 Gina
Error 62 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 14 Gina
Error 63 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 14 Gina
Error 64 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 14 Gina
Error 65 error C2146: syntax error : missing ';' before identifier 'RealWlxRemoveStatusMessage' d:\projects\prostick\prostick\gina\Trampulim.cpp 14 Gina
Error 66 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 14 Gina
Error 67 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 15 Gina
Error 68 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 15 Gina
Error 69 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 15 Gina
Error 70 error C2146: syntax error : missing ';' before identifier 'RealWlxScreenSaverNotify' d:\projects\prostick\prostick\gina\Trampulim.cpp 15 Gina
Error 71 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 15 Gina
Error 72 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 16 Gina
Error 73 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 16 Gina
Error 74 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 16 Gina
Error 75 error C2146: syntax error : missing ';' before identifier 'RealWlxShutdown' d:\projects\prostick\prostick\gina\Trampulim.cpp 16 Gina
Error 76 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 16 Gina
Error 77 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 17 Gina
Error 78 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 17 Gina
Error 79 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 17 Gina
Error 80 error C2146: syntax error : missing ';' before identifier 'RealWlxStartApplication' d:\projects\prostick\prostick\gina\Trampulim.cpp 17 Gina
Error 81 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 17 Gina
Error 82 error C2485: 'naked' : unrecognized extended attribute d:\projects\prostick\prostick\gina\Trampulim.cpp 18 Gina
Error 83 error C4235: nonstandard extension used : '_asm' keyword not supported on this architecture d:\projects\prostick\prostick\gina\Trampulim.cpp 18 Gina
Error 84 error C2065: 'jmp' : undeclared identifier d:\projects\prostick\prostick\gina\Trampulim.cpp 18 Gina
Error 85 error C2146: syntax error : missing ';' before identifier 'RealWlxWkstaLockedSAS' d:\projects\prostick\prostick\gina\Trampulim.cpp 18 Gina
Error 86 error C2143: syntax error : missing ';' before '}' d:\projects\prostick\prostick\gina\Trampulim.cpp 18 Gina
我認為問題出在這段代碼中的兩個地方是“裸”和內聯匯編跳轉語句:
#define IMPLEMENT_TRAMPULIM_PROC(ProcName) \
void* Real##ProcName = 0; \
extern "C" int __declspec(naked) ProcName(void) \
{ \
_asm jmp Real##ProcName \
} \
我在這里發布了包含此代碼的2個文件: https : //gist.github.com/emad-elsaid/cca68983951c82eb8e60
我使用Visual Studio 2008專業版
請注意,我並沒有編寫大部分代碼,而是從一個我不記得的網站復制了該代碼。 而且由於我沒有使用C ++進行Windows編程的豐富經驗,因此無法進一步跟蹤錯誤。
MS Visual Studio編譯器的64位版本不支持嵌入式匯編器。
如果不了解為什么要踩踏,那么很難說應該做什么(如果有的話)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.