Просто обратите внимание на то, какой метод вы в конечном итоге выберете, если этот метод включает в себя использование strcmp
, которое предлагают некоторые ответы:
strcmp
не работает с данными Unicode в целом. В целом, он даже не работает с байтовыми кодировками Unicode, такими как utf-8, поскольку strcmp
выполняет только байтовое сравнение, а кодовые точки Unicode, закодированные в utf-8, могут занимать более 1 байта. Единственный конкретный случай Unicode strcmp
, который правильно обрабатывается, - это когда строка, закодированная с помощью байтовой кодировки, содержит только кодовые точки ниже U + 00FF - тогда достаточно сравнения байтов на байты.
Сможет ли cygwin найти и запустить файлы .com?
Существует 2 исполняемых файла devenv
, один из которых - devenv.com
, приложение в режиме консоли, которое обрабатывает проксирование stdin, stdout и stderr для другого исполняемого файла, devenv. exe
, приложение в режиме графического интерфейса пользователя. Если cygwin загружает devenv.exe
, то файлов stdin / stdout не будет. Если загружается devenv.com
, он должен запустить devenv.exe
во время проксирования stdout на консоль.
Возможно, если вы явно укажете, что devenv.com
следует запустить?
Рассматривали ли вы возможность использования MSBuild ? Вы можете использовать msbuild для создания решений VS без каких-либо изменений, и он выводит вывод на стандартный вывод. Команда будет выглядеть примерно так:
msbuild mysolution.sln /t:Build /p:"Configuration=Debug" /p:"Platform=Win32"
MSBuild - это инструмент, разработанный MS для автоматизированных сборок, поэтому он может немного лучше соответствовать вашей проблеме, чем запуск devenv.exe.
Я нашел обходной путь.
devenv mysolution.sln /build Debug /out mylog.txt
выгружает результат сборки в mylog.txt
, что еще более удобно для автоматизированных сборок. Однако мне все еще любопытно, почему результат не отображается на экране.
Последнее, что я слышал, msbuild в vs 2008 не может обрабатывать проекты C ++. Я думаю, что это возможно в сравнении с 2010 годом.