【问题标题】:c++ 'undefined reference' to static library function [duplicate]c ++对静态库函数的“未定义引用”[重复]
【发布时间】:2018-04-15 04:48:01
【问题描述】:

【问题讨论】:

    标签: c++ windows mingw static-libraries


    【解决方案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。
    • 对不起我的错误,但是,通过声明内联函数,它会消除尝试链接静态库的全部意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多