Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库

Visual Studio "fatal error LNK1104: cannot open file" on a library that is not used or include

本文关键字:未使用 file open 包含 cannot fatal Studio error LNK1104 Visual      更新时间:2023-10-16

我有UnitTest项目,而不是使用我自己的NeuralNetwork库项目,该项目使用我自己的Boost项目(我用Boost.vcxproj重建 boost(,UnitTest不使用 Boost。那么,为什么我的UnitTest项目尝试链接libboost_serialization-vc142-mt-x64-1_71.lib

我检查,除了包含 .hpp 文件的文件夹外,我的UnitTests.vcxproj中没有提升引用。 我的Boost项目和NeuralNetwork项目构建没有任何错误,并正确处理了Boost.lib和NeuralNetwork.lib。

错误信息

1>------ Rebuild All started: Project: UnitTests, Configuration: Debug x64 ------
1>Building Custom Rule C:/Programming/Github/NeuralNetwork/tests/unit_tests/CMakeLists.txt
1>cl : command line warning D9002: ignoring unknown option '-g'
1>ExamplesTest.cpp
1>SaveNeuralNetworkTest.cpp
1>UnitTestTests.cpp
1>main.cpp
1>Generating Code...
1>LINK : fatal error LNK1104: cannot open file 'libboost_serialization-vc142-mt-x64-1_71.lib'
1>Done building project "UnitTests.vcxproj" -- FAILED.
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

全球CMakeList.txt

project(NeuralNetwork CXX)
set(CMAKE_CXX_STANDARD 17)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")

add_subdirectory(src)
add_subdirectory(tests)

神经网络CMakeLists.txt

file(GLOB SOURCES
"*.hpp"
"*.cpp"
)
include_directories(external_library/boost_1_71_0_minimal)
add_subdirectory(external_library/boost_1_71_0_minimal/libs/serialization)
add_library(NeuralNetwork ${SOURCES})
target_link_libraries(NeuralNetwork Boost)

测试CMakeList.txt

file(GLOB SOURCES
"*.hpp"
"*.cpp"
)
add_subdirectory(googletest-release-1.10.0)
include_directories(../src src)
include_directories(../src/external_library/boost_1_71_0_minimal)
add_library(GTestExtended ${SOURCES})
target_link_libraries(GTestExtended gtest)
add_subdirectory(unit_tests)
add_subdirectory(dataset_tests)

我添加了一个命令来忽略主CMakeLists.txt的库,它工作得很好。

添加到CMakeList 的代码.txt

if(MSVC)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:"libboost_serialization-vc142-mt-x64-1_71.lib"")
endif()