C++ LLVM IO错误-写入bc文件时出错
尝试删除原始组时出错C++ LLVM IO错误-写入bc文件时出错,c++,ios,llvm,C++,Ios,Llvm,尝试删除原始组时出错 void LLVMGenerator::SaveModule(string path) { std::string ErrInfo = ""; llvm::raw_ostream *out = new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None); llvm::WriteBitcodeToFile(_mod, *out); out-&g
void LLVMGenerator::SaveModule(string path) {
std::string ErrInfo = "";
llvm::raw_ostream *out =
new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None);
llvm::WriteBitcodeToFile(_mod, *out);
out->flush();
delete out; // LLVM ERROR: IO failure on output stream.
return;
}
请给我一些提示-如何解决这个小问题?
操作系统Ubuntu 13.10 x64,LLVM 3.4在
raw\u fd\u ostream
对象上发生了一些IO错误-可能底层的writev
调用遇到了不可恢复的错误raw_fd_ostream
在这种情况下的行为是打开指示发生错误的标志,如果该标志在销毁过程中仍处于打开状态,则会报告致命错误(=崩溃)
如果要避免此崩溃,可以在销毁对象之前调用对象上的
clear\u error()
;当然,建议您首先通过has_error()
检查错误是否发生,并尝试处理它。您遇到的第一个问题,即使与您的问题无关,也是您正在使用指针。实际上不需要指针和new
。事实上,在C++中,你应该尽量避免指针。还要注意,析构函数为您调用flush
。谢谢。实际上,我只是从BrainF LLVM Example复制了一些代码好的,我会尝试处理它。谢谢你,奥克!