使用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
相关产品推荐
相关产品推荐

