簡體   English   中英

使用 cmake 編譯時未定義的引用

[英]Undefined Reference when compiling with cmake

我正在使用 OpenCV 和 cmake(我都是新手)開發一個項目,並不斷收到對位於外部文件夾中的函數的未定義引用。

這是針對使用命令行界面的 Raspberry Pi。 我的 CMakeLists.txt 文件如下所示:

cmake_minimum_required(VERSION 3.1)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
project(projectName)
find_package(OpenCV REQUIRED)
add_executable(${PROJECT_NAME} project.cpp supportFile.c supportFile2.c)
target_link_libraries(projectName ${OpenCV_LIBS} wiringPi)

當我用cmake .編譯時cmake . make完成但帶有以下消息:

CMakeFiles/.dir/projectName.cpp.o: In function `main':
projectName.cpp:(.text+0x4c): undefined reference to `initializeBoard()'
projectName.cpp:(.text+0x98): undefined reference to `setRS485ServoPosition(unsigned short, unsigned short, unsigned short)'

所有未定義的引用都是supportFile.c、supportFile2.c 或wiringPi 庫中的函數調用。 我不知道如何解決這個問題?

project.cpp 文件:

#include "opencv2/highgui.hpp" 
#include "opencv2/opencv.hpp" 
#include "supportFile.h" 
#include "supportFile2.h" 

int main(int argc, char* argv[]) { 

initializeBoard(); brake = 0; speed = 70; usmAngle = 5; value = 4;
setRS485ServoPosition(USM,0,usmAngle); 
setRS485ServoPosition(CAMERASERVO,0,value); 
... 

initializeBoard() 位於 supportFile.h 文件中,setRS485ServoPosition() 函數位於 supportFile2.h 中。

我想出了我的問題是什么。 它不是使用 cmake,而是使用 supportFile.h 和 supportFile2.h。 我對這兩個文件進行了以下更改:

// .h file #include and #define section

#ifdef __cplusplus
extern "C" {
#endif

extern // to all .h functions section

#ifdef __cplusplus
}
#endif

這樣做之后,一切都編譯並運行了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM