C++ 链接错误:collect2:错误:ld返回1退出状态

C++ 链接错误:collect2:错误:ld返回1退出状态,c++,c++11,C++,C++11,我从civil.hpp创建了一个名为days\u的头文件 #ifndef BOOST_CHRONO_DATE_DAYS_FROM_CIVIL_HPP #define BOOST_CHRONO_DATE_DAYS_FROM_CIVIL_HPP namespace boost { namespace chrono { template<class Int> Int days_from_civil(Int y,unsigned m,unsigned d) no

我从civil.hpp创建了一个名为
days\u的头文件

#ifndef BOOST_CHRONO_DATE_DAYS_FROM_CIVIL_HPP
#define BOOST_CHRONO_DATE_DAYS_FROM_CIVIL_HPP

namespace boost {

namespace chrono {

    template<class Int>
    Int
    days_from_civil(Int y,unsigned m,unsigned d) noexcept ;

            }
}

#endif
然后我将文件
testalgo.cpp
定义为

 #include <iostream>
 #include "days_from_civil.hpp"

 int main(int argc, char const *argv[])
 {
int y = 1981;
int m = 5;
int d = 30 ;
int x = boost::chrono::days_from_civil(y,m,d);
std::cout<<x<<std::endl;
return 0;
 }

请帮我解决这个问题。
我想我做的每件事都是正确的。

请注意,civil的
days\u是一个模板函数,这通常意味着您需要为它提供一个定义,而不仅仅是一个声明。在头文件中包含函数体,就可以开始了,或者提供一个显式的实例化,如

template days_from_civil<int>(int y, unsigned m, unsigned d) noexcept;
模板天数(整数y,无符号m,无符号d)无例外;

请注意,civil的
days\u是一个模板函数,这通常意味着您需要为它提供一个定义,而不仅仅是一个声明。在头文件中包含函数体,就可以开始了,或者提供一个显式的实例化,如

template days_from_civil<int>(int y, unsigned m, unsigned d) noexcept;
模板天数(整数y,无符号m,无符号d)无例外;

请注意,civil的
days\u是一个模板函数,这通常意味着您需要为它提供一个定义,而不仅仅是一个声明。在头文件中包含函数体,就可以开始了,或者提供一个显式的实例化,如

template days_from_civil<int>(int y, unsigned m, unsigned d) noexcept;
模板天数(整数y,无符号m,无符号d)无例外;

请注意,civil的
days\u是一个模板函数,这通常意味着您需要为它提供一个定义,而不仅仅是一个声明。在头文件中包含函数体,就可以开始了,或者提供一个显式的实例化,如

template days_from_civil<int>(int y, unsigned m, unsigned d) noexcept;
模板天数(整数y,无符号m,无符号d)无例外;
请参见