You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CMake配置Kvaser CanLib库时出现未定义引用错误的求助

使用CMake配置Kvaser CanLib库时出现未定义引用错误的求助

大家好,我刚接触外部库和CMake,现在想在自己的硬件上用Kvaser CanLib开发CAN分析软件,用的是Qt Creator IDE写C语言。目前遇到了链接阶段的问题,没法正常构建项目,想请教下大家怎么解决。

具体情况是这样的:我的main.cpp写基础代码时能正常编译运行,甚至#include <canlib.h>也没有任何警告或错误,但只要调用库中的任何函数,就会弹出未定义引用的错误。

比如我在main里加了这段测试代码:

int ctrl = 1;
canHandle hnd;
printf("Opening CAN channel %d...", ctrl);
hnd = canOpenChannel(ctrl, canOPEN_EXCLUSIVE);
if(hnd < 0) {
    printf("FAILED\n");
}
printf("OK\n");

就会收到错误:undefined reference to canOpenChannel。

这是我CMakeLists.txt里的相关配置:

set(CANLIB_INCLUDE_DIR "C:/Program Files (x86)/Kvaser/Canlib/INC" CACHE PATH "Path to Kvaser CANLIB include directory")
set(CANLIB_LIBRARY_DIR "C:/Program Files (x86)/Kvaser/Canlib/Lib/MS" CACHE PATH "Path to Kvaser CANLIB library directory")

find_package(Canlib)

include_directories(${CANLIB_INCLUDE_DIR})
link_directories(${CANLIB_LIBRARY_DIR})

target_link_libraries(cmakeTEST2 "${CANLIB_LIBRARY_DIR}/canlib32.lib")

if(WIN32)
    target_link_libraries(cmakeTEST2 ws2_32)
endif()

include(GNUInstallDirs)
install(TARGETS cmakeTEST2
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

我已经指定了包含目录和库目录,也显式链接了canlib32.lib,但还是出问题。有没有大佬能帮我看看哪里配置错了?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 11:48:06