C++程序在VS2010中可以运行 但是debug里面的可执行文件不能单独运行 而DEVC++则均可以 什么情况 求解答。

#include<iostream>
#include<stdlib.h>
#include<fstream>
#include<cstring>
#include<string>
using namespace std;
int main()
{
ifstream input;
char c;
string ip;
char pingip[35];
string time="";
bool STATE=false;
cout<<"Please input the host you want to ping:"<<endl;
cin>>ip;
ip="ping -n 1 "+ip+" > tmp.txt";
//cout<<ip;
strcpy( pingip, ip.c_str() );
system(pingip);
input.open("tmp.txt",ios::in);
int num=0;
while(input>>c&&c!=EOF){
//num++;
if(c=='='||c=='<')
{
num++;
input>>c;
}
if(num==2)
{
if(c=='T')
{
break;
}
time+=c;
}
}
if(time.at(0)<49||time.at(0)>58)
{
time="Request timed out";
}
cout<<time<<endl;
system("pause");
return 0;
}

执行目录问题。VS默认的程序执行目录很恶心,不是在exe目录,而是工程的目录,所以如果你能在VS里执行,并且你没有修改默认的执行目录,那么你的这句input.open("tmp.txt",ios::in);将在普通双击的时候无法打开文件而失败。解决办法就是把tmp.txt文件放到exe目录去。
另外你的编程习惯不好,打开文件一般都要判断是否成功,不成功一看就知道是什么问题。

在项目设置的调试选项里面,可以修改工作目录,默认和exe不在同一个目录
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-03
可能是动态链接库的问题
你的VS2010编译时候可能用的动态链接,这时候有些dll在其他目录下 在VS2010执行时 会把那些路径加上去,在你自己的debug目录执行时,不一定加

你改成静态链接 就可以执行了追问

好像还是不行? 但是在命令行执行却可以成功! 你编译一下帮我看看吧!

追答

这个不好解释了啊
命令行可以 windows双击不可以 难道有执行用户权限的问题

本回答被提问者采纳
第2个回答  2012-12-04
错误提示是什么?贴出来
相似回答