对 `` CLion 的未定义引用
undefined reference to `` CLion
我正在尝试在 CLION IDE 中编译一个项目,但我无法成功,但我可以在 Eclipse 中编译完全相同的文件。
首先这是错误:
CMakeFiles\Besart.dir/objects.a(library1.cpp.obj): In function `Init':
C:/Users/Besart/ClionProjects/Besart/Data Structures 1/HW 2/library1.cpp:17:
undefined reference to `DataStructure::DataStructure()'
现在我已经包含了请求的文件,例如在 library1.cpp 的源文件中
我有:
#include "library1.h"
#include "DataStructure.h"
void* Init() {
DataStructure* DS(nullptr);
try {
DS = new DataStructure();
} catch (std::bad_alloc &e) {
delete DS;
return nullptr;
}
return (void *)DS;
}
但文件在DataStructures.cpp中实现并在DataStructure.h中声明
See image!!
最后这是 CMake:
cmake_minimum_required(VERSION 3.5)
project(Besart)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++11 )
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
add_executable(Besart ${SOURCE_FILES} "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp"
"Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
CMAKE
有人可以看到问题并帮助我在 CLion 中编译这个项目吗?
谢谢
您在 DataStructure.cpp
之后有错误 / 此处:
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
将其更改为:
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp"
"Data Structures 1/HW 2/library1.cpp")
然后按以下方式修复您的 add_executable():
add_executable(Besart ${SOURCE_FILES})
无需重复${SOURCE_FILES}
的内容。
我正在尝试在 CLION IDE 中编译一个项目,但我无法成功,但我可以在 Eclipse 中编译完全相同的文件。 首先这是错误:
CMakeFiles\Besart.dir/objects.a(library1.cpp.obj): In function `Init':
C:/Users/Besart/ClionProjects/Besart/Data Structures 1/HW 2/library1.cpp:17:
undefined reference to `DataStructure::DataStructure()'
现在我已经包含了请求的文件,例如在 library1.cpp 的源文件中 我有:
#include "library1.h"
#include "DataStructure.h"
void* Init() {
DataStructure* DS(nullptr);
try {
DS = new DataStructure();
} catch (std::bad_alloc &e) {
delete DS;
return nullptr;
}
return (void *)DS;
}
但文件在DataStructures.cpp中实现并在DataStructure.h中声明 See image!!
最后这是 CMake:
cmake_minimum_required(VERSION 3.5)
project(Besart)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -std=c++11 )
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
add_executable(Besart ${SOURCE_FILES} "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp"
"Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
CMAKE
有人可以看到问题并帮助我在 CLion 中编译这个项目吗? 谢谢
您在 DataStructure.cpp
之后有错误 / 此处:
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp/"
"Data Structures 1/HW 2/library1.cpp")
将其更改为:
set(SOURCE_FILES "Data Structures 1/HW 2/main.cpp"
"Data Structures 1/HW 2/Creature.cpp" "Data Structures 1/HW 2/Magi.cpp"
"Data Structures 1/HW 2/DataStructure.cpp"
"Data Structures 1/HW 2/library1.cpp")
然后按以下方式修复您的 add_executable():
add_executable(Besart ${SOURCE_FILES})
无需重复${SOURCE_FILES}
的内容。