尝试将测试程序链接到库,收到错误:iostream:没有这样的文件或目录

时间:2014-08-08 10:14:01

标签: c++ hardware iostream

我试图创建一个c ++库来控制信号发生器。我有一个工作脚本编译成一个可执行程序,以我想要的方式运行,现在我想创建一个带有信号的静态库'这样,代码可以集成到一个更大的库中,该库是由我所拥有的所有硬件的研究协作创建的。但是,我在为我编写的signal.cpp源代码和signal.h编译测试程序(test.cc)时遇到了麻烦。

这里是signal.cpp:

#include "signal.h"
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

signal::signal(){
  myfile.open("/dev/usbtmc1");
}
signal::~signal(){
  myfile.close();
}

int signal::on(){
  myfile<<"*RST\n";
  myfile<<":DISPLAY OFF\n";
  myfile<<"FUNC1:PULS:HOLD WIDT\n";
  myfile<<"FUNC1:PULS:TRAN:LEAD 2.5NS\n";
  myfile<<"FUNC1:PULS:TRAN:TRA 2.5NS\n";
  myfile<<":FUNC1:PULS:WIDT 20NS\n";
  myfile<<":FUNC1 PULS\n";
  myfile<<":VOLT1 5.0V\n";
  myfile<<":VOLT1:OFFS 1.797V\n";
  myfile<<":FREQ1 100HZ\n";
  myfile<<":OUTP1:IMP:EXT MAX\n";
  myfile<<":ARM:SOUR1 IMM|INT\n";
  myfile<<":OUTP1 ON\n";
  myfile<<":OUTP1:COMP ON\n";
  return 0;
}
int signal::off(){;
  myfile<<"*RST\n";
  return 0;
}
int signal::write(char comstring[80]){
  strcat(comstring,"\n");
  myfile<<comstring;
  return 0;
}

这里的signal.h:

#ifndef SIGNAL_H
#define SIGNAL_H

#include <iostream>
#include <fstream>
#include <string.h>
//using namespace std;

class signal{
 private:
  std::ofstream myfile;
 public:
  signal();
  ~signal();
  int on();
  int off();
  int write(char comstring[80]);
};
#endif

我编写的小测试程序试图调用信号类:

#include "signal.h"
using namespace std;

int main(){
signal ser;
ser.on();
}

我可以将signal.cpp和signal.h文件编译成signal.so动态对象,但是当我尝试调用&#39; g ++ test.cc -o test -l signal.h&#39 ;在终端,我得到错误:

signal.h:4:20:错误:iostream:没有这样的文件或目录 signal.h:5:19:错误:fstream:没有这样的文件或目录 signal.h:9:错误:在'信号'之前预期'=',',',';','asm'或'属性'

我对此感到困惑,因为我认为iostream和fstream是c ++标准库的一部分,因此在使用g ++编译时不需要链接。任何人都可以请问我应该解决的问题或尝试对此进行排序吗?非常感谢。萨姆。

1 个答案:

答案 0 :(得分:0)

希望您的所有文件都在同一个文件夹中。

g++ -I . test.cpp signal.cpp  -o test