我试图创建一个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 ++编译时不需要链接。任何人都可以请问我应该解决的问题或尝试对此进行排序吗?非常感谢。萨姆。
答案 0 :(得分:0)
希望您的所有文件都在同一个文件夹中。
g++ -I . test.cpp signal.cpp -o test