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 ++对静态库函数的“未定义引用”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C语言里面对啥未定义引用是啥意思?

与代码块一起使用时,使用 Visual Studio 创建的静态库显示对 Myfunction 的未定义引用

对 __isoc99_sscanf 的未定义引用

使用 MinGW 对 DevIL 函数的未定义引用

对函数错误的未定义引用,同时使用 C 和 C++

对带有数组的构造函数的未定义引用[重复]