我确实在 Windows 上使用 Microsoft/vcpkg 管理器安装了软件包 libconfig。在 Visual Studio 中试图将 libconfig++ 链接到我的项目,但无法链接。
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 17)
############ Project name and version
set (TEST_MAJOR_VERSION 1)
set (TEST_MINOR_VERSION 0)
set (TEST_PATCH_VERSION 0)
set (TEST_VERSION ${TEST_MAJOR_VERSION}.${TEST_MINOR_VERSION}.${TEST_PATCH_VERSION})
# Include our cmake macros
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
include (CMakeHelpers)
############ Add projects
# Add main library
add_subdirectory (src)
init_target (test)
if(_version_allowed STREQUAL NEW)
message (STATUS "==== set project " ${TARGET_NAME})
project (${TARGET_NAME} VERSION ${TEST_VERSION})
else()
project (${TARGET_NAME})
endif()
file (GLOB SOURCE_FILES
*.cpp)
file (GLOB HEADER_FILES
*.h)
find_package(libconfig)
if(WIN32)
link_directories(G:/_Development/Projects/cpprestsdk/vcpkg/installed/x64-windows/lib)
include_directories(G:/_Development/Projects/cpprestsdk/vcpkg/installed/x64-windows/include)
endif()
add_executable(${TARGET_NAME} ${SOURCE_FILES} ${HEADER_FILES})
target_link_libraries(test PRIVATE libconfig)
测试.cpp
#include <libconfig.h++>
using namespace libconfig;
int main(int argc, char* argv[])
{
// libconfig
Config cfg;
return 0;
}
错误:
------ 重建开始:项目:CMakeLists,配置:RelWithDebInfo ------ 清理... 0 个文件。[1/2] C:\PROGRA~2\MIB055~1\2017\PROFES~1\VC\Tools\MSVC\1416~1.270\bin\HostX64\x64\cl.exe /nologo /TP -IG:_Development\ Projects\cppTest\src -IG:_Development\Projects\cpprestsdk\vcpkg\installed\x64-windows\include /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MD /Zi /O2 /Ob1 /DNDEBUG
-std:c++17 /showIncludes /Fosrc\CMakeFiles\test.dir\test.cpp.obj /Fdsrc\CMakeFiles\test.dir\ /FS -c G:_Development\Projects\cppTest\src\test.cpp G :_Development\Projects\cpprestsdk\vcpkg\installed\x64-windows\include\libconfig.h++(51):警告 C4275:非 dll 接口类“std::exception”用作 dll 接口类“libconfig::”的基础ConfigException' C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include\vcruntime_exception.h(44):注意:参见 'std::exception' 的声明
lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd 。”失败:src/test.exe cmd.exe /C “cd 。&& "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=src\CMakeFiles\test.目录 --manifests -- C:\PROGRA~2\MIB055~1\2017\PROFES~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo src\CMakeFiles\test. dir\test.cpp.obj /out:src\test.exe /implib:src\test.lib /pdb:src\test.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console -LIBPATH: G:_Development\Projects\cpprestsdk\vcpkg\installed\x64-windows\lib libconfig.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && 光盘。构建失败。
怎么了?