我已經完成了試圖讓一個較舊的程序在Vista/Win7下運行的任務。
代碼看起來像C代碼,但 「奇怪」編譯較舊的c代碼
了foo.h:
int PASCAL WinMain(HANDLE, HANDLE, LPSTR, int);
BOOL InitApplication(HANDLE);
BOOL InitInstance(HANDLE, int);
long CALLBACK __export MainWndProc(HWND, UINT, WPARAM, LPARAM);
foo.c的:
int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
HANDLE hInstance; /* current instance */
HANDLE hPrevInstance; /* previous instance */
LPSTR lpCmdLine; /* command line */
int nCmdShow; /* show-window type (open/icon) */
{
/* rest of the code follows here */
我的C的知識是有限的,這句法不看起來像我見過的任何事物。 該方案已經在WinXP下運行,但不會在Vista/Win7的 - 我懷疑16位編譯(這是是老......)
代碼帶有一個補充文件,該文件規定:
# Microsoft Visual C++ generated build script - Do not modify
...
但無論是VS2010,也沒有GCC似乎可以編譯這段代碼(不是我試了一下,反正路上...) 使用VS2010,一個空的解決方案(VC++)第一個錯誤是:
error C2061: Syntaxerror: Identifier: 'MainWndProc' in line 4 of foo.h
error C2059: Syntaxerror: ';' in line 4 of foo.h
error C2059: Syntaxerror: 'Type' in line 4 of foo.h
有沒有一種簡單的方法可以在Win7/64bit上編譯?
你可以告訴我們初學者的錯誤信息。 – cnicutar 2011-06-10 11:41:40
這實際上取決於你得到的編譯錯誤,以及生成makefile的編譯器。我們需要更多信息來回答這個問題。 – 2011-06-10 11:43:25
使用dev-C++我得到的代碼可以通過註釋foo.h中的第一行和最後一行進行編譯 - 這兩個函數都是(現在顯然)已經在winbase.h中聲明瞭感謝您的幫助esp。指出這是完全有效的c代碼。 – Nils 2011-06-10 14:19:01