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

Rust调用依赖GLFW的C代码时头文件缺失、符号未解析问题求助

问题根因

你遇到的LNK1181错误核心原因是库名不匹配,其次是链接搜索路径、依赖库缺失的问题,按以下步骤修改即可:


具体修改步骤

1. 修正Cargo.toml构建依赖

将原有的cc构建依赖替换为cmake:

[build-dependencies]
cmake = "0.1.48"

2. 修正build.rs配置

你CMakeLists中通过add_library(c_project MyCFile.c)定义的库名为c_project,生成的静态库文件是c_project.lib而非MyCFile.lib,同时需要补充glfw依赖的Windows系统库、修正库搜索路径:

use cmake;

fn main() {
    let dst = cmake::build("c_project");
    // 补充lib子目录,cmake编译的静态库默认放在安装前缀的lib目录下
    println!("cargo:rustc-link-search=native={}/lib", dst.display());
    // 链接你自己的C库,注意库名和CMake定义的一致
    println!("cargo:rustc-link-lib=static=c_project");
    // 补充glfw在Windows平台依赖的系统库
    println!("cargo:rustc-link-lib=dylib=user32");
    println!("cargo:rustc-link-lib=dylib=gdi32");
    println!("cargo:rustc-link-lib=dylib=shell32");
}

3. 可选校验(路径拼写检查)

检查你c_project下的依赖文件夹拼写:你项目结构里写的是dependecies(少了字母n),如果实际文件夹名是这个,要保证CMakeLists里的路径和实际拼写一致,否则会出现找不到glfw的错误。


验证方法

执行cargo clean清理之前的构建缓存,再执行cargo run即可正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:03