0

我是 Visual Studio 2008(32 位)的初学者。我使用的 WinCE 版本是 7.0 评估版。我创建了一个新项目,

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

正如此链接中所述,我检查了libcmtd.lib它,它位于$(VCInstallDir)lib. 它也包含在Tools | Options | Projects and Solutions | VC++ Directories | Show Directories For -> Library files.

基于此链接,我检查了预编译的标头设置。我在那里发现了以下内容:

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' 

这里的链接问题也可能是什么?

4

3 回答 3

1

您编写的 C 代码在 WinCE 应用程序中不起作用。WinCE 应用程序的入口点是WinMain,而不是常规的 main。

所有 iostream 的东西都来自 STL。根据我自己的经验,在 WinCE 和 Windows 桌面上实际实现 STL 的方式存在一些差异。这将是现在和将来问题的根源。这是一篇讨论这些问题的 SO 文章

以下是您在 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 文件

尽管如此,当您进入 GUI 内容时,WinCE 应用程序会变得很有趣。如果我是你,我会摆脱这些 C++ 的东西并进入C# Compact Framework。

于 2013-03-07T06:46:45.527 回答
0

当您要编写main(argc, argv)样式程序时,您必须在项目向导中选择控制台应用程序。

于 2013-03-07T07:26:11.280 回答
0

如前所述,在这类 WinCE 应用程序中不能使用coutor语句。printf010110110101

相反,为了显示文本,我们将使用DEBUGMSGRETAILMSG基于构建模式。

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

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

例如,DEBUGMSG 不会在Release模式下工作。这些消息的语法在此链接中。

于 2013-03-08T06:32:05.373 回答