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

Visual Studio下LNK1104无法打开libraryName.lib问题求助

解决Visual Studio + CMake下LNK1104找不到库文件的零外部依赖方案

问题背景

首次使用Visual Studio,基于无外部库依赖的代码通过CMake生成可执行文件时,遭遇LNK1104: cannot open file 'libraryName.lib'错误。代码仅依赖标准C/C++库,已尝试移除链接器输入的附加依赖项、添加string_util_x64_mtd.lib,但问题仍未解决,要求实现零外部库依赖修复。

代码文件如下:
main.cpp

#include "sum_driver.hpp"

int main()
{
    sum_driver the_driver;
    the_driver.go();
}

sum_driver.hpp

#ifndef sum_driver_HPP
#define sum_driver_HPP

using namespace std;

class sum_driver
{
public:
    sum_driver(void);
    ~sum_driver(void);
    void go();

protected:
    int numberGuesser;
};
#endif sum_driver_HPP

sum_driver.cpp

#include "sum_driver.hpp"
#include <stdio.h> 
#include<stdlib.h>
#include<time.h>

sum_driver::sum_driver(void)
{
    char * default_error_name = "sum.err";
}

sum_driver::~sum_driver(void)
{
}

void sum_driver::go()
{
    int guessingNum = rand() % 100; // 生成1-100的随机数
    int noOfTimes = 0;
    int numberGuesser = 0;

    printf("Guess a number from 1 - 100 to find out what the number is.\n");

    while (guessingNum != numberGuesser) {
        scanf("%d", &numberGuesser);

        if (numberGuesser > guessingNum) {
            printf("%d is greater than the actual number. Guess again!\n", numberGuesser);
            noOfTimes++;
        }
        if (numberGuesser < guessingNum) {
            printf("%d is less than the actual number. Guess again!\n", numberGuesser);
            noOfTimes++;
        }
    }

    printf("Congratulations! You guessed it correctly! It took you %d tries! Press any key to exit.\n", noOfTimes);
}

解决方案

1. 修正CMakeLists.txt配置

你的代码仅依赖标准库,无需额外链接任何外部库。确保CMakeLists.txt配置简洁无冗余:

cmake_minimum_required(VERSION 3.10)
project(GuessNumberGame)

# 指定C++标准,适配代码需求
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 添加所有源文件生成可执行程序
add_executable(GuessNumberGame main.cpp sum_driver.cpp)

# 标准库会自动链接,无需手动添加任何库

2. 清理缓存并重新生成项目

旧缓存或残留配置可能导致错误:

  • 删除项目目录下的build文件夹(如果采用外部构建)
  • 在Visual Studio中依次执行:CMake -> 删除缓存 → CMake -> 配置 → 生成

3. 彻底检查VS链接器设置

确保没有隐藏的强制依赖配置:

  • 右键项目 → 属性 → 链接器 → 输入:确认「附加依赖项」为空,「忽略特定默认库」也为空
  • 切换到「所有配置」和「所有平台」进行检查,避免仅修改了单个配置
  • 检查「链接器 → 常规」中的「附加库目录」,确保无多余路径

4. 代码优化(非链接错误,但提升功能)

当前代码中rand()未初始化随机种子,每次运行会生成相同的随机数,建议在sum_driver构造函数中添加:

srand(time(NULL));

内容的提问来源于stack exchange,提问作者hellopeople125

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:43:20