2011-09-02 98 views
0

我創建了一個win32控制檯應用程序(沒有啓用預編譯頭選項)。 現在我的源代碼是這樣的,有兩個編譯器錯誤。VS2005中的基本Windows編程問題

// AFormattingMsgBox.cpp : Defines the entry point for the console application. 
// 
#include <windows.h> 
#include "stdafx.h" 


//int _tmain(int argc, _TCHAR* argv[]) 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
        PSTR szCmdLine, int iCmdShow) 
{ 
    int cxScreen, cyScreen; 

    cxScreen = GetSystemMetrics(SM_CXSCREEN); 
    cyScreen = GetSystemMetrics(SM_CYSCREEN); 

    MessageBoxPrintf(TEXT("ScrnSize"), TEXT("The screen is %i pixels wide by %i pixels high."), cxScreen, cyScreen); 

    return 0; 
} 


int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, int x, int y) 
{ 
    TCHAR szBuffer [1024]; 
    va_list pArgList; 

    va_start(pArgList, szFormat); 

    _vsntprintf(szBuffer, sizeof(szBuffer)/sizeof(TCHAR), 
       szFormat, pArgList); 

    va_end(pArgList); 

    return MessageBox(NULL, szBuffer, szCaption, 0); 

} 

編譯器錯誤。

error C3861: 'MessageBoxPrintf': identifier not found

error C2365: 'MessageBoxPrintf' : redefinition; previous definition was 'formerly unknown identifier

我該如何解決這些錯誤。感謝您的閱讀和答覆。

回答

1

要麼將​​函數MessageBoxPrintf放在WinMain函數之前,要麼在winMain之前添加原型。您可以通過輸入以下命令行添加原型:

int CDECL MessageBoxPrintf(TCHAR * szCaption, TCHAR * szFormat, int x, int y); 
+0

其次您的建議,但仍顯示鏈接錯誤:*錯誤LNK2019:在函數解析的外部符號_main引用___ tmainCRTStartup * –

+0

然後,我改變了'INT APIENTRY的WinMain(。 ..)'到'int _tmain(...)'。它現在有效。謝謝。 –