c++ - c++ 文件之间未定义的引用
问题描述
我在 clion 编辑器中有这个简单的程序
//main.cpp
#include "my.h"
int main(){
foo = 1;
print_foo();
return 0;
}
//my.cpp
#include <iostream>
#include "my.h"
void print_foo(){
std::cout << foo << std::endl;
}
//my.h
#ifndef INC_Project
#define INC_Project
extern int foo;
void print_foo();
#endif //INC_Project
cmake_minimum_required(VERSION 3.19)
project(Project)
set(CMAKE_CXX_STANDARD 11)
add_executable(Project my.h my.cpp main.cpp)
我得到这个输出
[100%] 链接 CXX 可执行项目
/usr/bin/ld:CMakeFiles/Project.dir/my.cpp.o:警告:针对
foo' in read-only section
.text'的重定位/usr/bin/ld:CMakeFiles/Project.dir/main.cpp.o:在函数“main”中:
/Project/main.cpp:5:对“foo”的未定义引用
/usr/bin/ld: CMakeFiles/Project.dir/my.cpp.o: 在函数`print_foo()'中:
/home/o/Documents/cpp/Project/my.cpp:6:未定义对“foo”的引用
/usr/bin/ld:警告:在 PIE 中创建 DT_TEXTREL
collect2:错误:ld 返回 1 个退出状态
make[3]: *** [CMakeFiles/Project.dir/build.make:118: Project] 错误 1
make[2]: *** [CMakeFiles/Makefile2:95: CMakeFiles/Project.dir/all] 错误 2
make[1]: *** [CMakeFiles/Makefile2:102: CMakeFiles/Project.dir/rule] 错误 2
make: *** [Makefile:137: Project] 错误 2
解决方案
推荐阅读
- csv - 错误:
属性高度:预期长度,“NaN” - r - 循环组并为每个组创建图 R
- c++ - 放宽内存顺序的原子加载和存储
- c++ - 以 Eigen 类型为参数的泛型函数回调
- r - 什么函数允许我根据 R 中列中的值从数据框中的列中提取数据?
- javascript - 使用 jQuery DataTable 如何通过在 C# 应用程序中调用 javascript 函数来启用/禁用列排序?
- java - Bluetooth scanner causing activity to clear
- reactjs - 如何同步从 Web API 后端发送到 React/Redux 前端的对象类型
- php - php 7 pdo mysql regexp 将变量放入查询中
- https - HTTPS 和安全 Websockets 说明