【发布时间】:2021-05-26 06:52:13
【问题描述】:
我正在尝试构建我的第一个 CMake 项目,但在 CXX executable NeuralNetLibrary 上失败了。
我在构建时收到undefined reference to FFLayer::test() 错误。
完整的项目在这里
https://github.com/JRazek/ConvolutionalNetLib。
请帮助我如何解决这个问题。
【问题讨论】:
我正在尝试构建我的第一个 CMake 项目,但在 CXX executable NeuralNetLibrary 上失败了。
我在构建时收到undefined reference to FFLayer::test() 错误。
完整的项目在这里
https://github.com/JRazek/ConvolutionalNetLib。
请帮助我如何解决这个问题。
【问题讨论】:
原因是您缺少不同库项目之间的依赖关系。比如Net库在Net.cpp中使用了FFLayer中定义的函数,但是对应的target_link_libraries(Net PRIVATE FFLayer)缺失了。
这会导致 CMake 以错误的顺序链接静态库,因为它假定没有顺序约束。
如果您修复该问题,您会发现Layer 的析构函数仍会出现缺少符号错误,该错误未实现。您可以添加一个带有定义的 .cpp 文件,或者只是将 = default; 添加到现有声明中,在这两种情况下都会生成。
【讨论】: