簡體   English   中英

使用 CMake 將 C 庫鏈接到 C++ 代碼時出現問題

[英]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.

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