定义了unicode的int _tmain(int argc,TCHAR*argv[])无法识别命令行参数 #定义UNICODE #定义WINVER 0x502 #包括 #包括 #包括 int_tmain(int argc,TCHAR*argv[]){ 如果(argc>1&&lstrcmpi(argv[1],L“install”)==0){ printf(“安装中”); } 否则如果(argc>1&&lstrcmpi(argv[1],L“卸载”)==0){ printf(“在卸载中”); } 否则如果(argc>1&&lstrcmpi(argv[1],L“start”)==0){ printf(“在开始\n”); } 否则{ printf(“在其他部分中”); } 返回0; }

定义了unicode的int _tmain(int argc,TCHAR*argv[])无法识别命令行参数 #定义UNICODE #定义WINVER 0x502 #包括 #包括 #包括 int_tmain(int argc,TCHAR*argv[]){ 如果(argc>1&&lstrcmpi(argv[1],L“install”)==0){ printf(“安装中”); } 否则如果(argc>1&&lstrcmpi(argv[1],L“卸载”)==0){ printf(“在卸载中”); } 否则如果(argc>1&&lstrcmpi(argv[1],L“start”)==0){ printf(“在开始\n”); } 否则{ printf(“在其他部分中”); } 返回0; },c,windows,winapi,unicode,mingw,C,Windows,Winapi,Unicode,Mingw,上面的代码没有检测到命令行参数,总是打印“else”部分。 如何实现我的目标 我用的是“MINGW”。。在windows XP中 谢谢。我认为MINGW编译器没有定义wmain,尽管定义了UNICODE。在检查代码时,使用命令行而不是argvw Ps:对不起,我的英语是:-)我认为MINGW编译器没有定义wmain,尽管UNICODE已经定义。在检查代码时,使用命令行而不是argvw Ps:对不起,我的英语是:-)通过打印argv[1]来诊断问题。另外,为什么要使用TCHAR?这是毫无意义的,尤

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

我用的是“MINGW”。。在windows XP中


谢谢。

我认为MINGW编译器没有定义wmain,尽管定义了UNICODE。在检查代码时,使用命令行而不是argvw


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

我认为MINGW编译器没有定义wmain,尽管UNICODE已经定义。在检查代码时,使用命令行而不是argvw


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

通过打印
argv[1]
来诊断问题。另外,为什么要使用
TCHAR
?这是毫无意义的,尤其是因为您的代码只适用于宽字符。不要让生活变得艰难,用
wchar\u t
代替
TCHAR
TCHAR
是您需要在Windows 98上运行代码时使用的。如果您搜索“mingw wmain”,您会发现与此相关的大量信息。似乎Unicode输入参数尚未完全可用。尽管如此,我在github上看到了一条最近的信息,暗示您可以使用-municode参数。。。但是我安装的mingw版本不支持它。如果没有定义unicode,上面的代码就可以了。“如果没有定义unicode,上面的代码就可以了。”怎么可能呢
lstrcmpi
采用宽字符串参数。您是否尝试打印
argv[1]
以查看它包含的内容。请通过打印
argv[1]
来诊断问题。另外,为什么要使用
TCHAR
?这是毫无意义的,尤其是因为您的代码只适用于宽字符。不要让生活变得艰难,用
wchar\u t
代替
TCHAR
TCHAR
是您需要在Windows 98上运行代码时使用的。如果您搜索“mingw wmain”,您会发现与此相关的大量信息。似乎Unicode输入参数尚未完全可用。尽管如此,我在github上看到了一条最近的信息,暗示您可以使用-municode参数。。。但是我安装的mingw版本不支持它。如果没有定义unicode,上面的代码就可以了。“如果没有定义unicode,上面的代码就可以了。”怎么可能呢
lstrcmpi
采用宽字符串参数。您是否尝试打印
argv[1]
以查看它包含的内容。
#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;
}