c语言如何引入第三方库,在Rust中,如何从第三方库定义或导入C结构体?
Rust FFI指南(
http://static.rust-lang.org/doc/master/guide-ffi.html)很好地演示了如何导入使用由Rust std :: lib库(例如size_t)包装的标准C类型的C函数.但是如何将第三方库中定义的C数据结构带入Rust程序?
memcached_st* memcached_create(memcached_st *ptr)
通常在C程序中像这样调用(踢脚):
#include
// ...
memcached_st *memc;
memc = memcached_create(NULL);
memcached_st是一个不透明的C结构 – 我如何在Rust程序中声明和使用它?这是我迄今为止失败的尝试:
use std::libc::*;
use ptr;
#[link(name = "memcached")]
extern {
struct memcached_st; // error: unexpected token: `struct`
memcached_st* memcached_create(memcached_st *ptr);
}
fn main() {
unsafe {
let memc = memcached_create(ptr:null());
println!("{:?}",memc);
}
}
和
use std::libc::*;
use ptr;
#[link(name = "memcached")]
extern {
// error: unexpected token: `memcached_st`
memcached_st* memcached_create(memcached_st *ptr);
}
fn main() {
unsafe {
let memc = memcached_create(ptr:null());
println!("{:?}",memc);
}
}
c语言如何引入第三方库,在Rust中,如何从第三方库定义或导入C结构体?相关推荐
- 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )
文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...
- c语言中结构体类型定义的函数指针,结构体中定义函数指针
结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...
- C语言概述(三)-- 宏定义、指针、结构体
宏定义 指针 结构体 1.宏定义 #define 每个参数加上括号,结果也加上括号 否则,可能会因为运算的优先级问题导致结果错误 #define ADD(a,b) ((a ...
- matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...
libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...
- C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)
1.结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数 ...
- 我的RUST学习——【第五章 5-2】一个使用结构体的demo
一个demo 我们现在利用结构体来实现一个计算长方形面积的代码. 我决定搞的面向对象一些,因此在这里使用结构体. struct Rectangle {width: u32,height: u32, } ...
- 计算机操作员 国家题库,计算机操作员中最新国家题库基础知识部分.doc
计算机操作员中最新国家题库基础知识部分 第1章 信息技术原理概述PAGE PAGE 22国家职业资格培训教程配套辅导练习第一章 信息技术原理概述计算机的概念.分类及应用1.信息革命的概念 迄今为止,人 ...
- php标准库string,PHP中的一些标准库
很多PHPer都不知道PHP有着自己的一些标准库,官网已经列出了SPL的PHP标准库 网址:php.net/spl 标准库中主要的一些数据结构 数据结构 名称 SplStack 栈 SplQueue ...
- C语言——关键字,define定义宏,指针,结构体
常见关键字 auto break case char continue const default do double else enum extern float for goto if int l ...
最新文章
- 利用Azure Backup备份和恢复虚拟机(2)
- socket阻塞导致拿不到信息
- Mysql表结构升级_mysql表结构升级时根据字段是否存在执行相应操作
- Fiori hide Header text in task list
- 使用MRUnit,Mockito和PowerMock进行Hadoop MapReduce作业的单元测试
- idea下使用Maven找不到类
- 求一个整数的各位累加和
- spring(12)
- IdPop3 出现 Max line length exceeded.的解决方法
- 3步解决AS提示:Compilation is not supported for following modules
- requests---timeout请求超时
- 人脸识别摄像头开发板和模组选型
- hadoop生态系统的详细介绍-详细一点
- 计算机音乐制作 体会心得,音乐软件制作的学习感受和心得体会
- ADS学习:统计分析——灵敏度分析、良率优化
- 2021年全国职业院校技能大赛网络搭建与应用之虚拟化配置答案
- MATLAB基础应用精讲-【基础知识篇】MATLAB中的标点符号
- Fedora 服务启动管理
- python数字精度自动变化_如何在python中将一个数字转换成12位精度?
- java基础-常用快捷键及基本dos命令
热门文章
- MySQL SELECT COUNT 一对多关联查询去重
- mysql8 caching-s,MySQL8.0登录连接报错caching_sha2_password解决方法
- 2023-1-7作业
- Connection to debugger failed: Interrupted function call: accept failed解决
- 基于SSM家电补贴一站式服务平台-计算机毕设 附源码12305
- java 继承执行顺序
- python光标变粗_解决IDEA中不能正常输入光标变粗的问题
- HMI智能座舱自动化测试的技术应用
- 简明 Python3 教程 | 学习笔记
- 从request获取各种路径request.getRealPath()