【发布时间】:2015-10-26 17:08:40
【问题描述】:
我总是得到undefined reference to m(),这是我的代码:
ex.c
#include "stdio.h"
void m() {
}
ex.h
void m();
ex_test.cpp
#include "gtest/gtest.h"
#include "ex.h"
TEST(m, 1) {
m();
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.1)
project(try)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(src ex.c)
add_executable(try ${src})
add_subdirectory(gtest)
include_directories(${gtest_SOURCE_DIR} ${gtest_SOURCE_DIR}/include)
add_executable(ex_test ex_test.cpp ex.c)
target_link_libraries(ex_test gtest gtest_main)
这是我在 clion 中的 output(对不起,当我复制它时,sof 会引发“主要是代码”错误
【问题讨论】:
-
undefined reference用于什么符号?如果您可以添加逐字链接错误,那就太好了。 -
@AntonioPérez 这是“m()”,我已经更新了
-
符号
m()似乎只在ex_test.cpp中被引用并在ex.c中定义,并且两者都是可执行文件ex_test的源列表的一部分,因此链接器毫无意义无法解析引用。请复制并粘贴链接器输出消息作为问题的一部分。肯定有相关信息可以回答您的问题。 -
@AntonioPérez “链接器输出”是什么意思,我刚学c。
-
调用
make后在控制台得到的完整输出
标签: c++ c cmake googletest