【问题标题】:Getting undefined reference error at adding simple class to library将简单类添加到库时出现未定义的引用错误
【发布时间】:2011-10-12 20:47:16
【问题描述】:

我正在使用一个相当大的库,它使用 CMake 进行编译/链接。我需要添加一些功能,因此我需要向库中添加一些类。问题是,当我将一个简单的 helloWorld 类添加到库中并尝试从某个主函数调用它时,我在链接时遇到未定义的引用问题。当我查看构建的代码(库文件夹中的“CMakeFiles”)时,我的类还没有被 CMake 编译(因此,例如,那里没有 HelloWorld.o 文件)。

有人能指出我哪里出错了吗?我需要明确告诉 CMake 编译这个类吗? (如果是,如何?)。我是 CMake 新手,所以不知道如何解决这个问题。

我这样调用函数。 ``

GSROrdinary sord;

我得到的错误信息是这样的。

undefined reference to beep::GSROrdinary::GSROrdinary()
undefined reference to beep::GSROrdinary::~GSROrdinary()

【问题讨论】:

    标签: c++ cmake linker-errors undefined-reference


    【解决方案1】:

    您必须将新文件显式添加到 CMake 文件中,以便编译和链接它们。

    这个commented sample 可以给你一个开始(基本上你必须在你的一个 CMakeLists.txt 文件中寻找一个add_library (LIBNAME files) 指令并在那里添加你的新文件,但你也应该阅读documentation

    【讨论】:

      【解决方案2】:

      是的,你需要告诉 CMake 编译你的类。我建议您查看一些可以在线找到的 CMake 教程。这是一个不错的选择:http://www.cs.swarthmore.edu/~adanner/tips/cmake.php - 特别注意 CMakeLists.txt 文件和语法。您必须修改 lib 的 CMakeLists.txt 才能添加新类。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-07
        • 2018-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多