2013-03-07 134 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)风格的程序,你必须选择在项目向导控制台应用程序

相关问题