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结构体?相关推荐

  1. 【Android NDK 开发】NDK 交叉编译 ( Ubuntu 中交叉编译动态库 | Android Studio 中配置使用第三方动态库 )

    文章目录 I . 动态库 与 静态库 II . 编译动态库 III. Android Studio 使用第三方动态库 IV . Android Studio 关键代码 V . 博客资源 I . 动态库 ...

  2. c语言中结构体类型定义的函数指针,结构体中定义函数指针

    结构体指针变量的定义 定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct 结构体标识符{ 成员变量列表;-};struct 结构体标识符 *指针变量名;变量初始化:stru ...

  3. C语言概述(三)-- 宏定义、指针、结构体

    宏定义 指针 结构体 1.宏定义      #define      每个参数加上括号,结果也加上括号      否则,可能会因为运算的优先级问题导致结果错误 #define ADD(a,b) ((a ...

  4. matlab二重指针,VC++中函数返回数组指针或者带指针的结构体的编译方式是否可取? - 程序语言 - 小木虫 - 学术 科研 互动社区...

    libralibra 构造函数+析构函数应该是比较正规的做法吧, 你的结构体/类被提早释放的问题,是不是那个结构体是局部变量,当超出作用域时对象被销毁,如果存在析构函数,会被默认调用, 如果你返回结构 ...

  5. C语言结构体的定义与使用、结构体数组、指向结构体的指针(有代码详解)

    1.结构体的定义与使用 结构体是一种构造数据类型 把不同类型的数据组合成一个整体 结构体的定义形式: struct 结构体名{结构体所包含的变量或数组 }; 结构体是一种集合,它里面包含了多个变量或数 ...

  6. 我的RUST学习——【第五章 5-2】一个使用结构体的demo

    一个demo 我们现在利用结构体来实现一个计算长方形面积的代码. 我决定搞的面向对象一些,因此在这里使用结构体. struct Rectangle {width: u32,height: u32, } ...

  7. 计算机操作员 国家题库,计算机操作员中最新国家题库基础知识部分.doc

    计算机操作员中最新国家题库基础知识部分 第1章 信息技术原理概述PAGE PAGE 22国家职业资格培训教程配套辅导练习第一章 信息技术原理概述计算机的概念.分类及应用1.信息革命的概念 迄今为止,人 ...

  8. php标准库string,PHP中的一些标准库

    很多PHPer都不知道PHP有着自己的一些标准库,官网已经列出了SPL的PHP标准库 网址:php.net/spl 标准库中主要的一些数据结构 数据结构 名称 SplStack 栈 SplQueue ...

  9. C语言——关键字,define定义宏,指针,结构体

    常见关键字 auto break case char continue const default do double else enum extern float for goto if int l ...

最新文章

  1. 利用Azure Backup备份和恢复虚拟机(2)
  2. socket阻塞导致拿不到信息
  3. Mysql表结构升级_mysql表结构升级时根据字段是否存在执行相应操作
  4. Fiori hide Header text in task list
  5. 使用MRUnit,Mockito和PowerMock进行Hadoop MapReduce作业的单元测试
  6. idea下使用Maven找不到类
  7. 求一个整数的各位累加和
  8. spring(12)
  9. IdPop3 出现 Max line length exceeded.的解决方法
  10. 3步解决AS提示:Compilation is not supported for following modules
  11. requests---timeout请求超时
  12. 人脸识别摄像头开发板和模组选型
  13. hadoop生态系统的详细介绍-详细一点
  14. 计算机音乐制作 体会心得,音乐软件制作的学习感受和心得体会
  15. ADS学习:统计分析——灵敏度分析、良率优化
  16. 2021年全国职业院校技能大赛网络搭建与应用之虚拟化配置答案
  17. MATLAB基础应用精讲-【基础知识篇】MATLAB中的标点符号
  18. Fedora 服务启动管理
  19. python数字精度自动变化_如何在python中将一个数字转换成12位精度?
  20. java基础-常用快捷键及基本dos命令

热门文章

  1. MySQL SELECT COUNT 一对多关联查询去重
  2. mysql8 caching-s,MySQL8.0登录连接报错caching_sha2_password解决方法
  3. 2023-1-7作业
  4. Connection to debugger failed: Interrupted function call: accept failed解决
  5. 基于SSM家电补贴一站式服务平台-计算机毕设 附源码12305
  6. java 继承执行顺序
  7. python光标变粗_解决IDEA中不能正常输入光标变粗的问题
  8. HMI智能座舱自动化测试的技术应用
  9. 简明 Python3 教程 | 学习笔记
  10. 从request获取各种路径request.getRealPath()