c ++如何构建库

时间:2014-01-07 11:57:02

标签: c++ eclipse

我在ubuntu 12.04下使用eclipse ide,Kepler service release 1 我创建了一个名为my_lib.h的库。我在该库中有三个函数,fun1,fun2,fun3。
然后我通过以下方式将此库包含在另一个.cpp文件中:

#include <my_lib.h>
int main(){
    fun1();
    fun2();
    fun3();
    return 0;
}

然后我收到fun3的错误,fun3 could not be resloved
我直接在.cpp中定义fun3,同时在.h文件中定义如下:

#include <my_lib.h>
void fun3(){
    //do something
}
int main(){
    fun1();
    fun2();
    fun3();
    return 0;
}

然后我有一个错误:redefinition for fun3
最后,我从.h文件中删除fun3并在.cpp文件中保留fun3以使其正常工作。我想将所有这些功能放在.h文件中,有人知道如何解决它吗?
以下是my_lib.h文件中的相关部分

#ifndef MY_LIB_H_
#define MY_LIB_H_
template <class T>
void print_matrix(const T& the_matrix){
    for(uint32 row = 0; row < the_matrix.size(); ++row){
    for(uint32 col = 0; col < the_matrix.size(); ++col){
        std::cout << the_matrix[row][col] << " ";
    }
    std::cout << std::endl;
}
}
template <class T>
void print_vector(const T& the_vector){
for(typename T::const_iterator p = the_vector.begin()
        ; p != the_vector.end(); ++p){
    std::cout << *p << "\n";
}
/*
for(uint32 i = 0; i < the_vector.size(); ++i){
    std::cout << the_vector[i] << "\n";
}
*/
}
template <class T>
double my_mean(const T& v){
    return accumulate(v.begin(), v.end(), 0.0) / v.size();
}
#endif /* MY_LIB_H_ */

函数print_matrix和print_vector很好,但最后一个有问题。

0 个答案:

没有答案