【问题标题】:Arguments On a Console eMbedded Visual C++ Application控制台嵌入式 Visual C++ 应用程序上的参数
【发布时间】:2011-02-06 18:50:22
【问题描述】:

我正在尝试开发一个简单的应用程序,该应用程序将读取一些针对 Windows CE 的文件。为此,我使用的是 Microsoft eMbedded Visual C++ 3。这个程序(用于控制台)将像这样调用:

/存储卡/测试> coms file.cmss

如您所见,file.cmss 是第一个参数,但在我的main 上,如果参数小于 2,我有条件显示帮助(正常,如何使用程序):

int WinMain(int argc,char **argv) {
    if(argc < 2) {
        showhelp();
      return 0;
    }
}

但是当我在 Windows CE 的命令行上执行程序时(使用所有必要的参数),我得到了 showHelp() 内容。然后我检查了所有代码,但它完全正确。但我认为 eVC++ 不使用argcargv[] 作为参数,那么我需要一些关于如何确定参数的帮助。

【问题讨论】:

  • main 函数的签名/声明是什么样的?
  • @Reuben:现在我已将其添加到问题中。

标签: c arguments windows-ce evc


【解决方案1】:

WinMain 定义为

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR    lpCmdLine, /* command line */
                   int       nCmdShow)

你可能想要类似的东西

if (sscanf(lpCmdLine, "%s", filename) != 1) {
  showHelp();
}

【讨论】:

    【解决方案2】:

    您需要提供有关嵌入式平台的更多详细信息。嵌入式平台与台式计算机有很大不同,尤其是在文件系统 I/O、内存容量和硬件布局(寻址)等资源方面。

    要开发 WinCE 应用程序,您必须确认平台支持文件系统。许多嵌入式系统没有。

    接下来,您应该研究如何设置 WinCE 来执行 C 函数:它使用 Windows (WinMain)、tmainwmain 还是 main?此外,您需要研究如何将参数传递给程序。窗口化编程不同于“控制台”编程。

    【讨论】:

      【解决方案3】:

      Windows 应用程序的“主要”功能可以采用几种不同形式之一。有WinMain,有main and wmain。在您的情况下,您编写了一个 WinMain 函数,该函数采用经典的 main 参数(即 argcargv)。

      我建议您将函数名称切换为 main,并确认您的 Visual Studio 项目已正确配置为“正确”的应用程序入口点。

      【讨论】:

      • 您是在编译控制台应用程序还是 Windows GUI 应用程序?
      • 我选择了 WCE 应用程序。
      • 我不熟悉这个特定版本的 Visual C++,但 Visual C++/Studio 通常可以选择“GUI”(又名 Win32)应用程序与“控制台”应用程序。 Windows GUI 应用程序通常使用 WinMain 函数;如果这是您需要的,那么您需要更改主函数的参数以匹配 WinMain 的文档(即 lpCmdLine 和其他而不是 argc/argv)。
      猜你喜欢
      • 2019-01-18
      • 2012-02-14
      • 1970-01-01
      • 2010-12-19
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多