gpt4 book ai didi

c++ - 在重新编译我们的 FORTRAN 代码并在 C++ 中使用它之后,我们的 system() 或 c_str() 命令无法正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 12:46:02 24 4
gpt4 key购买 nike

你好,我有一个大问题:我们在 C++/Qt 4.8.4/Qt Creator 2.8.1 年前创建了一个程序,在执行时运行另一个可执行文件(用 FORTRAN 编写和编译)。一切正常。

我们用新版本的 Visual Studio 重新编译了我们的 Fortran-Code,现在它突然不再工作了。我查看了我的 C++ 代码并找到了程序崩溃的位置:

  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()) 变成了 true 这以前没有发生过。

这似乎发生在c_str-命令或system()-命令中。

我们之前有一些丢失的 dll 问题。 这是另一个 dll 问题吗?如果是的话是哪个?

有人可以帮我们解决这个问题吗?

谢谢

最佳答案

system 的返回值是一个整数,而不是 bool 值。它的值仅为一种非常特殊的情况定义,system(nullptr)。这里不是这种情况。因此,您得到的结果是零还是非零取决于您的特定 C++ 实现,这确实发生了变化。 (“新 Visual Studio 版本”)。你不能依赖非零意味着错误

c_str() 根本不是嫌疑人。

关于c++ - 在重新编译我们的 FORTRAN 代码并在 C++ 中使用它之后,我们的 system() 或 c_str() 命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51535338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com