通过Visual Studio运行程序会导致程序失败
Running program through Visual Studio causes it to fail?
我正在编写的程序有问题。它是一个命令行解析器,用于解析bencode(用于torrent文件)。程序接受一个文件名作为它的命令行。当我在Microsoft Visual Studio 10.0中使用调试Commmand Line参数设置来输入命令行时,程序告诉我解析失败。
如果我打开一个命令提示符,并使用相同的命令行从命令提示符运行程序,程序运行得很好!怎么回事?这是Visual Studio的常见问题吗?
我在VisualStudio中使用了调试器来跟踪程序失败的地方,并且似乎对stat函数(http://msdn.microsoft.com/en-us/library/14h5k7ff.aspx)在Visual Studio中返回错误,但在Visual Studio之外运行时工作正常。
该代码使用Bencode解析器,可在此处找到:http://funzix.git.sourceforge.net/git/gitweb.cgi?p=funzix/funzix;a=斑点;f=弯码/弯码.c
这是程序的代码:
#include <stdio.h>
#include "../Parse/bencode.h"
int main(int argc, char *argv[]){
if(argc != 2){
printf("Usage: whirlwind filenamen");
return 1;
}
char *buf;
long long len;
be_node *n;
//read the torrent file into a buffer and store at &buf
buf = read_file(argv[1], &len);
if(!buf){
buf = argv[1];
len = strlen(argv[1]);
}
printf("Decoding: %sn", argv[1]);
n = be_decoden(buf, len);
if(!n){
printf("Parsing failed!n");
return 1;
}
if(n->type != BE_DICT){
printf("This file is not a valid Bencoded Dictionary.n");
return 1;
}
int i;
char* keyName;
for(i = 0; i < 10; i++){
keyName = n->val.d[i].key;
if(keyName == "announce"){
printf("nn");
}
printf("%sn", keyName);
if(keyName == "announce"){
printf("nn");
}
}
return 0;
}
如果您从Visual Studio传递一个相对路径,那么当您的应用程序在IDE中运行时,应该确保它正确解析。出现此问题的原因是,在调试时,当前目录通常为\bin\debug
为了安全起见,请输入完整的路径名或从配置文件中读取文件的位置。
相关文章:
- libprotobuf 检查在 Mac OS 上执行程序时失败
- QDateTime::toString() 在退出处理程序中使用时失败
- 为什么我的Qt程序在断言失败后继续运行?
- 每次b/c程序无法加载级联时,使用harr级联的人脸识别都会失败
- C++ 错误的分配应用程序失败
- MXE Qt5 应用程序构建在 Docker 容器中失败
- 激活上下文生成失败,依赖程序集,并行,事件 ID 33
- 用户创建程序失败
- 在 Windows 7 的 CodeBlocks 16.01 中构建 glfw3 程序失败
- 添加大数字C++-初始化程序失败
- 通过Visual Studio运行程序会导致程序失败
- 自定义矢量类模板初始化程序失败
- 在Mac OSX上为i386目标构建Apache Thrift应用程序失败
- Crypto++导致应用程序失败
- Perl 5.14源代码-示例程序失败
- QtCreator:启动程序失败.路径或权限错误
- c++应用程序失败-没有错误
- 处理程序失败后该怎么做
- 程序失败.共享 Ptr 矢量 c++
- 当我从常量引用调用方法时,程序失败