【问题标题】:CMake, MinGW=Undefined Reference to GetIpAddrTable-> iphlpapi.hCMake,MinGW=未定义对 GetIpAddrTable-> iphlpapi.h 的引用
【发布时间】:2021-06-07 15:54:25
【问题描述】:

我有一个在 Linux 中运行良好的 CMake 项目,但在 Windows 下却不行。 第一个问题来自最终链接:

[100%] Linking CXX shared library libProjlib.dll
CMakeFiles\Projlib.dir/objects.a(configserver.cpp.obj): In function `ConfigServer::findAdapter(unsigned long*)':
C:/Users/jose/Documents/git-Projects/Proj/Projlib/configserver.cpp:859: undefined reference to `GetIpAddrTable'
Error 1

findAdapter 属于 C:\Qt\Tools\mingw810_64\x86_64-w64-mingw32\include\iphlpapi.h,但不会自动链接

我认为我的项目配置错误。 我想选择MinGW编译器,通过CMakeLists.txt自动(目前我配置编译器是指cmake-gui.exe..),自然解决问题,但我没有知识。 (谷歌没有给我解决方案)

请,任何帮助或建议,链接..等都会受到欢迎。

这是我的 CMakeLists.txt

cmake_minimum_required(VERSION 3.13)
set(CMAKE_PROJECT_NAME "testProject")
project(${CMAKE_PROJECT_NAME})

set(CMAKE_BUILD_TYPE Debug)

if("Windows" STREQUAL "${CMAKE_SYSTEM_NAME}")
    message(STATUS "_______________________________________Compiling on Windows")

elseif("Linux" STREQUAL "${CMAKE_SYSTEM_NAME}")
    message(STATUS "_______________________________________Compiling on GNU/Linux :-)")
endif()


set(CMAKE_BUILD_PARALLEL_LEVEL 8)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

#list(APPEND CMAKE_PREFIX_PATH "/home/enigma/Qt/5.15.2/gcc_64") #linux
list(APPEND CMAKE_PREFIX_PATH "C:\\Qt\\Tools\\mingw810_64")
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON) 
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

message(STATUS "___________________________________________________${CMAKE_BUILD_TYPE}")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
    set(binPath "binDebugProj")
elseif()
    set(binPath "binProj")  
endif()

set(TMP_BUILD "tmpBuild")
set(Proj_LIB "Projlib")


add_subdirectory(${Proj_LIB} "${CMAKE_SOURCE_DIR}/../${binPath}/${TMP_BUILD}/${Proj_LIB}")
include_directories(${Proj_LIB})

【问题讨论】:

  • GetIpAddrTable 需要链接 Iphlpapi.lib。
  • 好吧是一个共享的windows库,但是为什么不自动呢?我应该怎么做?提前致谢
  • 我的问题可能被视为微不足道,但是: target_link_libraries($Project_LIB} PUBLIC Qt5::Core Qt5::Network iphlpapi) 不起作用。自然地,代码有各自的包含#include
  • 在 Stack Overflow 上,我们不会手动添加“SOLVED”或其他表示问题已解决的标记。该问题将在接受答案后自动标记为此类。你甚至可以接受你自己的答案,但要延迟一些。

标签: c++ windows qt cmake mingw


【解决方案1】:

解决办法是: target_link_libraries(${CARDEA_LIB} PUBLIC Qt5::Core Qt5::Network iphlpapi)

最后确实奏效了。 (我在另一个 CMakeLists.txt AGGHH 中节省了时间,今天的时间太长了)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多