c++ - Visual Studio 2010 C++ 版本 : "mt.exe" error

标签 c++ visual-studio-2010 visual-studio mt

我正在用 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;
}

但是,当我尝试编译时,出现错误:

Link:
  Generating code
  Finished generating code
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): error MSB6006: "mt.exe" exited with code 31.

我已经用谷歌搜索了这个错误,但我只找到了对我不起作用的解决方案。奇怪的是,如果我重建解决方案(构建 > 重建解决方案或 CTRL + ALT + F7),我能够编译代码。当我正常编译时,我要么得到“构建失败”(如果这是重建后的第一个构建),要么得到“构建成功”(如果我改变了一些东西)。

此外,生成的可执行文件似乎无法运行。这个想法是将前 512 个字节从 boot.bin 复制到 boot.img。字节似乎正确读取(我在我的代码中放置了“cout << buffer”,字符串被正确打印到第一个空字符),但没有写入 boot.img。当我将 boot.img 更改为不存在的文件时,没有创建任何文件。当我在调试器中运行程序时,我没有收到任何错误(即使这两个文件在项目目录中都不存在)。

最佳答案

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

是“||”允许吗?

检查

“|”单管

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

关于c++ - Visual Studio 2010 C++ 版本 : "mt.exe" error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813471/

相关文章:

c++ - 了解如何使用带指针作为参数的typedef void函数

visual-studio - 如何解决... Visual Studio 源代码管理通知 "Projects have recently been added to this solution"

visual-studio - 如何避免超过 Visual Studio 中的内部 ILK 大小限制?

c - 我应该为多个连接使用单独的 ODBC 环境吗?

c++ - 低版本visual studio构建.dll

c++ - TouchGFX 小部件在空白屏幕上可见

C++ 前向声明和文件设计

c++ - LNK2019 未解析的外部符号_SDL_Init 在函数_SDL_main 中引用

c++ - 如何在 basic 中从 visual studio 项目调用或执行 c++ 代码?

visual-studio-2010 - 暂时禁用 Visual Studio 中的构建事件