Я пишу очень простую программу на С++ для копирования загрузочного сектора из одного файла в другой. Мой код:
#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 Jarod42   schedule 15.09.2013