重新编译我们的FORTRAN代码并在C++中使用后,我们的system()或C_str()命令无法正常工作
After recompiling our FORTRAN-code and using it in C++ our system() or c_str() command don`t work properly
嗨,我有一个大问题:我们在几年前用C++/Qt 4.8.4/Qt Creator 2.8.1创建了一个程序,在执行时运行另一个可执行文件(用FORTRAN编写和编译(。一切都很顺利。
我们用Visual studio的新版本重新编译了Fortran代码,但现在它突然不起作用了。我查看了我的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();
}
不知怎的,系统((Executable+">"+"X.out2"(.c_str(((变成了true,这在以前是没有发生过的。
这似乎发生在c_str-命令或system((-命令中。
我们以前遇到过一些缺少dll的问题这是另一个dll问题吗?如果是,是哪个
有人能帮我们吗
谢谢
system
的返回值是一个整数,而不是布尔值。它的值只针对一个非常特殊的情况定义,即system(nullptr)
。这里的情况并非如此。因此,你得到的结果是零还是非零取决于你的特定C++实现,它确实发生了变化。("新视觉工作室版本"(。您不能依赖非零均值错误
c_str()
根本不是嫌疑犯。
相关文章:
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 我们可以访问一个不存在的联盟的成员吗
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 当使用透明的std函数对象时,我们还需要写空的尖括号吗
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 我们可以删除链表中静态内存中的节点吗
- Python str to C++ to Python str
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 当我们从/tp地址中添加/减去一个整数时会发生什么
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- int数据类型的指针指向的是什么,如果是一个类的私有数据成员,我们创建了该类的两个对象?
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 我们可以将数据永久保存为数据结构吗?
- 为什么无论你输入什么,这"while(cin.get(str,3))"只运行一次?
- 为什么我们将单个或多维数组的大小声明为常量值?
- 字符串变量,比如说"字符串str",可以直接复制到数组中吗?
- 为什么我们不能重复使用具有不同模板参数的别名模板标识符?
- 为什么当我们有常量引用时创建临时对象?
- 为什么我们再次从结构对象创建结构变量?
- 为什么当我们反转此函数中的字符串时,char *str 的指针没有改变?