【问题标题】:command line arguements not recognised by int _tmain ( int argc, TCHAR* argv[] ) with unicode defined定义了 unicode 的 int _tmain ( int argc, TCHAR* argv[] ) 无法识别命令行参数
【发布时间】:2012-05-26 02:24:39
【问题描述】:
#define UNICODE
#define WINVER 0x502
#include <stdio.h>
#include <windows.h>
#include <tchar.h>

int _tmain( int argc, TCHAR* argv[] ) {

    if ( argc > 1 && lstrcmpi( argv[1], L"install" ) == 0 ) {
        printf ( "In install\n");
    }
    else if ( argc > 1 && lstrcmpi( argv[1], L"uninstall" ) == 0 ) {
        printf ( "In Uninstall\n" );
    }
    else if ( argc > 1 && lstrcmpi( argv[1], L"start" ) == 0 ) {
        printf ( "In Start\n" );
    }
    else {
        printf ( "In else part\n" );
    }

    return 0;
}

上面的代码没有检测到命令行参数并且总是打印“else”部分。 如何实现我的目标?

我正在使用“MINGW”.. 在 windows XP 中..

谢谢..

【问题讨论】:

  • 通过打印argv[1]来诊断问题
  • 另外,你为什么使用TCHAR?这毫无意义,尤其是因为您的代码仅适用于宽字符。不要让自己的生活变得艰难,使用wchar_t 而不是TCHARTCHAR 是您需要在 Windows 98 上运行代码时使用的。
  • 如果你用谷歌搜索“mingw wmain”,你会发现很多与此相关的信息。似乎 Unicode 输入参数尚未完全可用。虽然,我最近在 github 上看到了一条信息,暗示您可以使用 -municode 参数……但我安装的 mingw 版本不支持它。
  • 如果没有定义 unicode,上面的代码可以正常工作。
  • "在没有定义 unicode 的情况下,上面的代码可以正常工作。"怎么可能? lstrcmpi 采用宽字符串参数。您是否尝试打印 argv[1] 以查看其中包含的内容。

标签: c windows winapi unicode mingw


【解决方案1】:

我认为 MINGW 编译器虽然定义了 UNICODE,但并没有定义 wmain。在您的检查代码中使用 CommandLineToArgvW。

Ps:对不起我的英语:-)

【讨论】:

    猜你喜欢
    • 2011-10-20
    • 2013-09-08
    • 2020-11-03
    • 2020-05-19
    • 2020-01-23
    • 2016-01-25
    • 2011-07-08
    • 2014-10-09
    • 2018-12-01
    相关资源
    最近更新 更多