发行包括图书馆C++; p>我有一个非常简单的C++文件乘法器.CPP < /C> >对应的头文件,从这里我用下面的命令< /p>创建了一个库 $ g++ -o Multiplier.o -c Multiplier.cpp $ ar cr libMultiplier.a Multiplier.o

发行包括图书馆C++; p>我有一个非常简单的C++文件乘法器.CPP < /C> >对应的头文件,从这里我用下面的命令< /p>创建了一个库 $ g++ -o Multiplier.o -c Multiplier.cpp $ ar cr libMultiplier.a Multiplier.o,c++,g++,static-libraries,unix-ar,C++,G++,Static Libraries,Unix Ar,在一个新的目录中,我创建了一个Calculator.cpp(带有相应的头文件),它使用了Multiplier类。头文件Calculator.h具有相应的`#include“Multiplier.h” 头文件Calculator.h具有相应的#include“Multiplier.h” 我将创建的库复制到此目录中,并尝试使用以下命令编译Calculator.cpp: $ g++ -o Calculator Calculator.cpp -L. -lMultiplier 这给了我这些错误: In

在一个新的目录中,我创建了一个
Calculator.cpp
(带有相应的头文件),它使用了
Multiplier
类。头文件
Calculator.h
具有相应的`#include“Multiplier.h”

头文件
Calculator.h
具有相应的
#include“Multiplier.h”

我将创建的库复制到此目录中,并尝试使用以下命令编译
Calculator.cpp

$ g++ -o Calculator Calculator.cpp -L. -lMultiplier
这给了我这些错误:

In file included from Calculator.cpp:1:
Calculator.h:1:24: error: Multiplier.h: No such file or directory
In file included from Calculator.cpp:1:
Calculator.h:6: error: ISO C++ forbids declaration of ‘Multiplier’ with no type
Calculator.h:6: error: expected ‘;’ before ‘&’ token
Calculator.h:8: error: expected `)' before ‘&’ token
Calculator.cpp:5: error: redefinition of ‘class something::Calculator’
Calculator.h:5: error: previous definition of ‘class something::Calculator’`
我已经找了很长时间,但不知道发生了什么。
我使用的是GCC 4.2.1。

您的include文件
Multiplier.h
位于另一个文件夹中。您希望编译器如何找到它?您需要使用
-I
命令行标志并提供包含文件的路径,或者使用
#include
指令中的路径来告诉编译器文件在哪里。

库中是否没有
乘数.h
文件?@luketorjussen不,库不是这样工作的。编译器甚至看不到库–这是链接器的工作(这是两个基本上独立的组件,即使您在这里通过同一个可执行文件调用它们)。因此,当您创建库时,还需要复制所有头文件?头文件由编译器用于定义,链接器使用库来获取实现?@luketorjussen编译器使用头文件进行声明,链接器使用库进行定义(=实现)。