当前位置: 首页 > news >正文

Rust 创建并编译一个可供 C 或其他语言调用的动态链接库

 前言

最近在搞hook,正好看到这例子。于是就有了下文,使用rust 编写动态链接库,供c、c++ 语言调用。仅供参考。

// src/lib.rs
// 禁止编译器改名,使用 C 调用约定
#[no_mangle]
pub extern "C" fn hello() {// println!("Hello from Rust .so!");
}#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {a + b
}

[package]
name = "pcrust"
version = "0.1.0"
edition = "2021"[lib]
crate-type= ["cdylib"][dependencies]
libc = "0.2"
ctor = "0.1"
once_cell = "1.17"
simple_logger = "1.11"
log = "0.4"

创建c文件

#include <stdio.h>// 
void hello(void);
int add(int a, int b);int main() {hello();printf("3 + 4 = %d\n", add(3, 4));return 0;
}

连接生成的库文件 , 调用成功

bruce@bruce-Inspiron-3910:/data/pcrust$ gcc test.c -L target/release -lpcrust -o test
bruce@bruce-Inspiron-3910:/data/pcrust$ ls
Cargo.lock  Cargo.toml  src  target  test  test.c
bruce@bruce-Inspiron-3910:/data/pcrust$ ./test
./test: error while loading shared libraries: libpcrust.so: cannot open shared object file: No such file or directory
bruce@bruce-Inspiron-3910:/data/pcrust$ LD_LIBRARY_PATH=./target/release ./test
Hello from Rust .so!
3 + 4 = 7

说明:

gcc test.c \
    -L target/release \       # 库文件所在目录
    -lpcrust \                 # 链接 libpcrust.so
    -o test

相关文章:

  • 零基础设计模式——第二部分:创建型模式 - 原型模式
  • OpenCV 图像对象的创建与赋值
  • AI与.NET技术实操系列(六):实现图像分类模型的部署与调用
  • (视觉)分类、检测与分割在不同网络中的设计体现
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (3)
  • 【LeetCode 热题 100】二分查找 系列
  • 在Java的list.forEach(即 Stream API 的 forEach 方法)中,无法直接使用 continue 或 break 语句的解决办法
  • linux中部署jdk,开机自启动jdk以及linux中java开机自启某个jar包文件
  • 5月22总结
  • Seay代码审计工具
  • labview实现将百分制分数转换为等级制分数
  • Linux shell 正则表达式高效使用
  • Labview基础使用教程
  • 2025海外短剧CPS系统开发指南:高付费市场解析与增速全景图
  • HUAWEI华为MateBook D 14 2021款i5,i7集显非触屏(NBD-WXX9,NbD-WFH9)原装出厂Win10系统
  • Flutter生物识别认证之Flutter指纹认证Flutter人脸认证
  • 网络编程 之网络七层模型、TCPUDP协议、JAVA IO 发展历程
  • LeetCode 3356.零数组变换 II:二分查找 + I的差分数组
  • 数据分析师如何用OKR驱动业务增长
  • [Java][Leetcode middle] 6. Z 字形变换
  • 装修公司加盟哪个好/seo的中文是什么
  • 中铁建设集团有限公司门户网站/如何快速被百度收录
  • 电子政务网站模版/百度广告怎么收费标准
  • 湖州网站建设湖州网站建设/自动点击器软件
  • 数据分析师就业前景如何/搜索引擎优化工具有哪些
  • 互联网医院网站建设/全球网站排名查询