c ++对静态库函数的“未定义引用”[重复]
Posted
技术标签:
【中文标题】c ++对静态库函数的“未定义引用”[重复]【英文标题】:c++ 'undefined reference' to static library function [duplicate] 【发布时间】:2018-04-15 04:48:01 【问题描述】:I have re-asked this question here...
【问题讨论】:
【参考方案1】:您需要在Math.h
中包含每个函数的实现。声明它们inline
,例如
template<typename T>
inline T max(T a, T b)
return a > b ? a : b;
原因是在编译你的Math.cpp
文件时,编译器不知道你要为哪些数据类型实例化函数。
所以,内联Math.h
中的函数并去掉Math.cpp
。
【讨论】:
我试过了,但它似乎仍然产生同样的错误。 再试一次。这就是这样做的方法。 我现在更改了代码,去掉了模板的东西,还像你说的那样在“Math.cpp”源文件中包含了“Math.h”头文件。但是,它仍然会引发链接错误。 我没有说你应该在Math.cpp
中包含Math.h
。我说你应该内联Math.h
中的函数并抛弃Math.cpp
。
对不起我的错误,但是,通过声明内联函数,它会消除尝试链接静态库的全部意义。以上是关于c ++对静态库函数的“未定义引用”[重复]的主要内容,如果未能解决你的问题,请参考以下文章