2013-03-07 92 views
0

我是Visual Studio 2008(32位)的初學者。我使用的WinCE版本是7.0評估。我創建了一個新的項目爲,用於WinCE應用程序的Hello World(C和C++) - Visual Studio 2008

New Project -> Platform Builder-> OS Design

入選BSP的,

BSP: Generic CEPC:x86

當設計模板突出Consumer Media Device,我剛按下Finish

上述選擇對我來說是必須的。除此之外,我創建了一個子項目a simple hello world application並添加了一行cout<<"Hello World";(因爲它們是默認的cpp文件)。我還包括iostream

我有錯誤,比如,

fatal error C1083: Cannot open include file: 'iostream': No such file or directory

正如this link說,我查出來libcmtd.lib,它是在$(VCInstallDir)lib。它也包含在Tools | Options | Projects and Solutions | VC++ Directories | Show Directories For -> Library files中。

基於this link,我檢查了預編譯頭文件的設置。我在那裏找到以下內容:

Precompiled Files : Yes 
Precompiled Header File Name : StdAfx.pch 
Precompiled Header Object File Name : StdAfx.obj 
Precompiled Header Options : (blank) 
Precompiled Header Source File Name : StdAfx.h 

如何禁用此功能?如果我禁用了這個功能,那麼對於項目的其他部分我是否會遇到任何其他問題?

更新:

對於C程序,

#include<stdio.h> 

int main() 
{ 
    printf("\nHello World\n"); 
    return 0; 
} 

我得到了以下錯誤,

error LNK2019: unresolved external symbol _WinMain referenced in function _WinMainCRTStartupHelper 

fatal error LNK1120: 1 unresolved externals 

fatal error U1077: 'D:\WINCE700\sdk\bin\i386\x86\link.EXE' : return code '0x460' 

可能是什麼問題鏈接這裏也?

+0

used 'using namespace std;'? – 2013-03-07 04:52:58

+0

@ACB是的。我也嘗試過。我得到了以下錯誤'錯誤C2871:'標準':一個名稱空間與這個名稱不存在' – Gomu 2013-03-07 04:54:53

+0

反正你可以請在這裏添加程序?如果你在'#include '之間有'#include ''將它移到前面 – 2013-03-07 05:01:30

回答

0

在這些類型的WinCE應用程序中,不可能使用coutprintf語句,因爲010110110101表示。

相反,爲了顯示文本,我們將使用基於構建模式的DEBUGMSGRETAILMSG

DEBUGMSG(TRUE,(TEXT("Hello World"))); 

RETAILMSG(TRUE,(TEXT("Hello World"))); 

例如,DEBUGMSG將不適用於Release模式。這些消息的語法是this link

1

您編寫的C代碼在WinCE應用程序中不起作用。您的WinCE應用程序的入口點是WinMain,不是常規main。

所有iostream的東西都來自STL。根據我自己的經驗,在WinCE和Windows桌面上如何實際實現STL有一些差異。這將成爲現在和未來問題的根源。這是一個SO article discussing these problems

這裏是你可能會怎麼做WinCE下(代碼沒有實際測試過)

#include "stdafx.h" 

using namespace std; 
#include <iostream> 

int WINAPI WinMain (
     _In_ HINSTANCE hInstance, 
     _In_ HINSTANCE hPrevInstance, 
     _In_ LPSTR lpCmdLine, 
     _In_ int nCmdShow) 
{ 
    cout << "hello world" << endl; 
    return 0; 
} 

一個Windows應用程序和WinCE應用程序遵循不同的規則,比控制檯(CRT)的應用程序需要不同的庫。在Visual Studio中,創建一個默認的Win32項目並創建一個默認的控制檯應用程序。然後在文本比較工具中比較三者之間的項目文件。你會看到很多不同之處。這些差異包括至少以下內容:

  • 一個不同的切入點 - WinMain函數,_WinMain,_tWinMain等
  • 他們能夠使用WINDOWS.H文件和所有相關設備
  • 一組不同的的默認.lib文件,你必須鏈接到

儘管所有這一切,WinCE應用程序得到樂趣,當你進入圖形用戶界面的東西。如果我是你,我會離開這個C++的東西,進入C# Compact Framework.

+0

感謝。但是,它給出了與我上面所說的相同的錯誤。 – Gomu 2013-03-07 07:04:57

0

當你想要寫一個main(argc, argv)風格的程序,你必須選擇在項目嚮導控制檯應用程序

相關問題