【发布时间】: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而不是TCHAR。TCHAR是您需要在 Windows 98 上运行代码时使用的。 -
如果你用谷歌搜索“mingw wmain”,你会发现很多与此相关的信息。似乎 Unicode 输入参数尚未完全可用。虽然,我最近在 github 上看到了一条信息,暗示您可以使用 -municode 参数……但我安装的 mingw 版本不支持它。
-
如果没有定义 unicode,上面的代码可以正常工作。
-
"在没有定义 unicode 的情况下,上面的代码可以正常工作。"怎么可能?
lstrcmpi采用宽字符串参数。您是否尝试打印argv[1]以查看其中包含的内容。
标签: c windows winapi unicode mingw