如何在Rust中调用共享库? 我用C包装器编写了一个C++库,想从RIST项目中调用这些函数。然而,当我试图将我的Rust项目链接到C库时,我在注释中遇到了一个很长的错误 注意:/usr/bin/ld:找不到-l../cpp_library/build/libdisplay.so

如何在Rust中调用共享库? 我用C包装器编写了一个C++库,想从RIST项目中调用这些函数。然而,当我试图将我的Rust项目链接到C库时,我在注释中遇到了一个很长的错误 注意:/usr/bin/ld:找不到-l../cpp_library/build/libdisplay.so,c++,c,rust,ffi,C++,C,Rust,Ffi,我尝试传递一个到库的绝对路径,但收到了一个类似的错误 我的组合项目具有以下目录和内容 ├── cpp_图书馆 │   ├── CMakeLists.txt │   ├── 包括 │   │   └── 显示.h │   └── src │   ├── display.cpp │   └── main.cpp └── rust_项目 ├── 建造 ├── 货锁 ├── 货舱 ├── src    └── 梅因 CMakeLists.txt cmake_最低要求(3.1.0版) 项

我尝试传递一个到库的绝对路径,但收到了一个类似的错误

我的组合项目具有以下目录和内容

├── cpp_图书馆
│   ├── CMakeLists.txt
│   ├── 包括
│   │   └── 显示.h
│   └── src
│       ├── display.cpp
│       └── main.cpp
└── rust_项目
├── 建造
├── 货锁
├── 货舱
├── src
   └── 梅因
CMakeLists.txt

cmake_最低要求(3.1.0版)
项目(目录测试)
集合(CMAKE\U构建\U类型发布)
#将标题带到项目中
包含目录(包含)
集合(源“src/display.cpp”)
#从源代码生成共享库
添加库(显示共享${SOURCES})
添加可执行文件(显示测试“src/main.cpp”${SOURCES})
显示.h

extern“C”{
void display();
}
显示.cpp

#包括
#包括“display.h”
无效显示(){

std::您的问题似乎可以用;;;的答案来回答。如果不是,请您的问题解释差异。否则,我们可以将此问题标记为已回答。应用于您的项目和构建说明的副本(未创建“构建”目录):
println(“cargo:rustc-link-search=../cpp_-library/”;println!(“cargo:rustc-link-lib=dylib=display”);
#[link(name=“display”)]
cargo:rustc-link-lib
应该使用,而不是两者都使用。我测试了潜在副本中给出的解决方案,但仍然收到相同的错误。我编辑了构建c库的说明,以便库最终位于正确的位置。我删除了冗余的
35;[link(name=“display”)]
但这并没有解决问题。哦,我明白了。我错过了对build.rs第二行的编辑。在应用您的更改后,我能够成功构建。最初,我没有尝试运行该程序,但您确实预料到我将遇到的下一个问题。通过编辑到LD_LIBRARY_路径,我能够成功运行该程序非常感谢你的帮助!