c++ - 重新编译我们的 FORTRAN 代码并在 C++ 中使用它后,我们的 system() 或 c_str() 命令无法正常工作
问题描述
嗨我有一个大问题:我们在 C++/Qt 4.8.4 /Qt Creator 2.8.1 年前创建了一个程序,在执行时运行另一个可执行文件(用 FORTRAN 编写和编译)。一切运作良好。
我们用新版本的 Visual Studio 重新编译了我们的 Fortran 代码,现在突然它不再工作了。我查看了我的 C++-Code 并找到了程序崩溃的位置:
std::string Executable = ApplicationName.toStdString();
bool RunOK= system((Executable+" > "+"X.out2").c_str());
QString ExeName = (Executable+" > "+"X.out2").c_str();
QString tf = QString::number(qweee);
if(system((Executable+" > "+"X.out2").c_str()))
{
msg.showMessage("msg.showMessage("An XXX error occured during calculation......((Executable+ > +X.out2).c_str(): "+ExeName +"......(system((Executable+ > +X.out2).c_str()): "+ QString::number(RunOK));
if(QFile(OutputFiles[0]).exists())
QFile(OutputFiles[0]).remove();
}
不知何故system((Executable+" > "+"X.out2").c_str())变得真实,这在以前没有发生过。
这似乎发生在c_str -command 或system() -command 中。
我们之前有一些缺失的 dll 问题。这是另一个 dll 问题吗?如果是,是哪个?
有人可以帮助我们吗?
谢谢
解决方案
的返回值system
是一个整数,而不是布尔值。它的值仅针对一种非常特殊的情况定义,system(nullptr)
。这不是这里的情况。因此,您是否获得零或非零结果取决于您的特定 C++ 实现,这确实发生了变化。(“新视觉工作室版本”)。你不能依赖非零意味着错误
c_str()
根本不是嫌疑人。
推荐阅读
- javascript - 如何将数据从一个 app.js 文件发送到 Routes 中的 index.ejs 文件
- javascript - 如何解决jspdf名称冲突
- sql - 关联表中的 SQL Server 汇总(总和)值
- node.js - express-handlebars 不会呈现数据,但会呈现数据的模板
- python - 合并特定数组并对它们进行排序
- mysql - 选择语句向后返回 ID
- polymer - 根据 dom-repeat 中的索引计算属性值
- javascript - react中的useForm无法正常进行两次手动更新
- python - TypeError:列表索引必须是整数或切片,而不是列表”
- java - 我需要将用户名的值从 Spring 控制器传递到 JSP 页面