我正在尝试通过命令行将文件传递给我的c ++程序。我正在尝试的是:
g++ main.cpp quadTree.h Rectangle.h quadTree.cpp Rectangle.cpp obstacles_copy.txt -lX11 -lm -L/usr/X11R6/lib
我一直收到这个错误:
/usr/bin/ld:obstacles_copy.txt: file format not recognized;
treating as linker script
/usr/bin/ld:obstacles_copy.txt:1: syntax error
collect2: error: ld returned 1 exit status**
我使用
在main()中打开文件FILE *fp=fopen(argv[1],"r");
有什么建议吗?
答案 0 :(得分:3)
当你说"传递文件"时,你的意思是什么?
在您的示例中,您正在尝试将文本文件编译为二进制文件,这会给您带来问题。
您应该在运行时将文件名作为命令行参数传入,或者使用cmd < file
将文件输入到您的标准输入。
要在运行时传入文件,您可以使用./myprogram filename
在bash中调用您的程序,然后在main
中,您可以访问argv[1]
的文件名,确保处理argc == 1
答案 1 :(得分:3)
先编译
g++ main.cpp quadTree.h Rectangle.h quadTree.cpp Rectangle.cpp -lX11 -lm -L/usr/X11R6/lib
然后执行
./a.out obstacles_copy.txt
如果你想将文本文件构建到二进制文件中,可以通过使用objcopy将其转换为gcc将理解的格式来完成,但是这样转换它将是一个内存对象(一个很大的char数组)而不是文件。和fopen fgets等文件操作不起作用。