[英]Problems when linking C library to C++ code with CMake
我有一個簡單的 C 庫,其中包含以下文件: /testlib/library.h /testlib/library.lib
library.h 包含:
#ifdef __cplusplus
extern "C" {
#endif
void function(int a, int b);
#ifdef __cplusplus
}
#endif
我正在嘗試在我的 main.cpp 中使用這個 header:
extern "C" {
#include "library.h"
}
int main()
{
function(1, 2);
return 0;
}
這是我的 CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(StudyProject)
include_directories(testlib/)
link_directories(testlib/)
add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/testlib/)
我使用 Qt Creator(Windows 平台,MinGW 7.3.0),它使用以下命令構建項目:
cmake.exe --build . --target all
但是我在鏈接時遇到以下錯誤:
undefined reference to 'function'
誰能幫助我我做錯了什么?
您的 cmake 文件沒有說您要將主程序與給定庫鏈接,因此 linker 正確地抱怨缺少 function()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.