Visual Studio 2010 C++ Build: ошибка "mt.exe"
Я пишу очень простую программу на C++, чтобы скопировать загрузочный сектор из одного файла в другой. Мой код:
#include <fstream>
int main ()
{
char buffer[512];
std::fstream myfile ("boot.bin", std::ios::binary || std::ios::in);
myfile.seekg(0);
myfile.read(buffer, 512);
myfile.close();
myfile.open("boot.img", std::ios::binary || std::ios::out);
myfile.seekp(0);
myfile.write(buffer, 512);
myfile.close();
return 0;
}
Однако, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке:
Ссылка на сайт:
Генерация кода
Закончено генерирование кода
Bootcopy.vcxproj -> c: \ users \ xxx \ documents \ visual studio 2010 \ Projects \ Bootcopy \ Release \ Bootcopy.exe
C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ Microsoft.CppCommon.targets (562,5): ошибка MSB6006: "mt.exe" завершен с кодом 31.
Я погуглил эту ошибку, но нашел только те решения, которые мне не помогли. Странно то, что я могу скомпилировать код, если перестрою решение (Build > Rebuild Solution или CTRL + ALT + F7). Когда я компилируюсь нормально, я получаю либо "сборка не удалась" (если это первая сборка после перестроения), либо "сборка завершилась успешно" (если я что-то изменил).
Кроме того, полученный исполняемый файл не работает. Идея состоит в том, чтобы скопировать первые 512 байт из boot.bin в boot.img. Кажется, что байты читаются правильно (я вставил в мой код "cout << buffer", и строка была напечатана правильно с точностью до первого нулевого символа), но не записывается в boot.img. Когда я изменяю boot.img на несуществующий файл, файл не создается. Когда я запускаю программу в отладчике, я не получаю никакой ошибки (даже если оба файла отсутствуют в каталоге проекта).
1 ответ
std::ifstream myfile("boot.bin", std::ios::binary || std::ios::in);
Есть "||" позволил?
проверить с
"|" одна труба
std::ifstream myfile("boot.bin", std::ios::binary | std::ios::in);