Сборка Visual Studio 2010 C++: ошибка mt.exe

Я пишу очень простую программу на С++ для копирования загрузочного сектора из одного файла в другой. Мой код:

#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.

Я искал эту ошибку в Google, но нашел только решения, которые не сработали для меня. Странно то, что я могу скомпилировать код, если перестрою решение (Build > Rebuild Solution или CTRL + ALT + F7). Когда я компилирую нормально, я получаю либо «сбой сборки» (если это первая сборка после перестроения), либо «сборка выполнена успешно» (если я что-то изменил).

Кроме того, полученный исполняемый файл, похоже, не работает. Идея состоит в том, чтобы скопировать первые 512 байт из boot.bin в boot.img. Байты вроде читаются правильно (в коде я поставил "cout ‹‹ buffer", и строка печаталась корректно до первого нулевого символа), но не записываются в boot.img. Когда я меняю boot.img на несуществующий файл, файл не создается. Когда я запускаю программу в отладчике, я не получаю никаких ошибок (даже если оба файла не существуют в каталоге проекта).


person Ruben    schedule 15.09.2013    source источник
comment
Я бы сказал, что вы должны использовать | вместо ||   -  person Jarod42    schedule 15.09.2013


Ответы (1)


std::ifstream myfile("boot.bin", std::ios::binary || std::ios::in);

"||" разрешается?

проверить с

"|" одинарная труба

std::ifstream myfile("boot.bin", std::ios::binary | std::ios::in);
person user1502952    schedule 15.09.2013
comment
@MonKeePoo, добро пожаловать. Я думал, была ли проблема только в ошибке программирования, поскольку есть блоги, такие как остановка антивируса. - person user1502952; 15.09.2013