rust - type OnProduce = extern "C" fn 不是 FFI 安全的
问题描述
pub type OnProduce = extern "C" fn(*mut ZLMedia, *const u8, size_t);
extern "C" {
pub fn zlmedia_set_on_produce(zl_media: *mut ZLInstance, on_produce: OnProduce);
}
我得到:
|
23 | pub fn zlmedia_set_on_produce(zl_media: *mut ZLInstance, on_produce: OnProduce);
| ^^^^^^^^^ not FFI-safe
|
= help: consider adding a `#[repr(C)]` or `#[repr(transparent)]` attribute to this struct
= note: this struct has unspecified layout
但不能#[repr(C)]
为类型添加,只能为结构添加。如您所见,OnProduce
是一个extern "C"
函数。我以为它已经是 FFI 安全的了
解决方案
推荐阅读
- bash - 使 Ctrl-p 和 Ctrl-n 搜索按键入字符过滤的 shell 历史记录
- javascript - 删除类切换上的转换
- c# - 如何允许 SignalR 使用 EF6 将更新从 DB 推送到浏览器
- sql - 提取每 2 个样本之间时间差最小的数据
- asp.net-mvc - 将 Azure 存储帐户中的静态网站添加到 Asp.net MVC 应用程序?
- python - panda3d 和 GeoMipTerrain - 在地形上加载纹理
- android - IONIC 相机插件 FILE_URI 根据所选文件类型(视频/图片)返回不同的文件路径格式
- java - 如何像 C++ lambda 函数一样拥有带有成员的 java lamba 函数?
- javascript - 将 PHP 数组发送到 JS 模块,“导入”问题
- mysql - #1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 对应的手册