sojourner92
sojourner92

Reputation: 43

Trying to link a test program to a library, getting error: iostream: No such file or directory

I'm trying to create a c++ library for the purpose of controlling a signal generator. I have a working script that compiles into an executable that runs the way I want, and now I want to create a static library with a 'signal' class such that the code can be integrated into a larger library being created by the research collaboration I'm part of for all the hardware we have. However, I'm having trouble compiling a test program (test.cc) for the signal.cpp source code and signal.h that I've written.

Here's 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;
}

Here's 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

And the little test program I've written to try out calling the signal class:

#include "signal.h"
using namespace std;

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

I can get the signal.cpp and the signal.h files to compile into a signal.so dynamic object, but when I try to call 'g++ test.cc -o test -l signal.h' at the terminal, I get the error:

signal.h:4:20: error: iostream: No such file or directory signal.h:5:19: error: fstream: No such file or directory signal.h:9: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘signal’

I'm confused by this, as I thought iostream and fstream were part of the c++ standard library and therefore wouldn't need to be linked when compiling using g++. Could anyone please illuminate me as to what I should fix or try to sort this? Many thanks. Sam.

Upvotes: 0

Views: 188

Answers (1)

Harikrishnan R
Harikrishnan R

Reputation: 1454

Hoping your all files are in same folder.

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

Upvotes: 1

Related Questions