系统软件 应用软件 图形软件 行业软件 安全相关 网络软件 聊天软件 影音软件 教育教学 驱动工具 编程开发 插件下载 源码下载 APP电脑版 其他类别

innative官方版

v0.1.10

innative官方版

  • 软件大小:145.0 MB
  • 软件语言:简体中文
  • 软件授权:共享软件
  • 软件类型:编程开发
  • 软件平台:WinAll
  • 更新时间:2022-01-27 15:11
  • 星级评分:4级
  • 软件官网:https://www.downza.com/
好评:50%顶一个
坏评:50踩一个

innative简介

innative可以帮助用户编辑WebAssembly。您可以从软件中获得构建网络组装模块所需的大部分功能。构建完成后,可以将它们添加到其他开发软件中使用。结合SDK功能,可以嵌入到新项目中使用,让用户快速完成新项目的编程。该软件提供了一个标准的网络组装环境。它还允许广泛的定制,并包括一些非标准的内置功能,这使得本机网络组装模块的工作更加容易。可以通过静态嵌入、静态共享嵌入、动态共享嵌入来部署innative,也可以通过命令行运行软件!

innative软件功能

InNative是一个跨平台的WebAssembly实现,它可以嵌入到您的程序中,也可以作为的运行时安装。它将WebAssembly模块编译成C二进制文件,该文件可以链接成静态或动态库,并且可以通过简单的C接口访问。

虽然inNative符合标准,但它为您提供了一些选项来调整要实现标准的哪些部分,从而允许您指定如何用沙箱保护(或不沙箱保护)生成的WebAssembly二进制文件。这使得inNative能够在宿主程序中安全地执行沙盒化的网络程序集,或者编译像本机程序一样调用内核函数的模块。

辅助功能

inNative默认环境提供了几个辅助功能,使调试本地网络程序集变得容易。所有这些函数都被视为具有默认调用约定的原始C函数,应该像任何其他C函数一样导入。编译器本身也提供了一些内在的功能,从WebAssembly的角度来看就像是辅助功能。其中一些功能不安全。如果启用了白名单,那么所有白名单都必须像其他C函数一样加入白名单。

本地cref扩展

InNative实现cref表示c指针的自定义值类型。在大多数情况下,它的行为anyref类似于“引用类型推荐”中的行为,并充当指向C内存的不透明指针。然而,与不同的是,您可以将i32或I传递给cref类型。此类型具有二进制编码,可以在任何标准webassembly模块中实现,但由于没有编译器生成此值,因此此类型主要用于。沃特档案。

innative软件特色

InNative附带了一个测试工具,可以执行三个测试阶段:

内部测试,旨在测试本机特定结构和非标准Webassembly扩展。

基准测试,针对一个函数的多个Webassembly编译版本测试C ++版本的函数。

标准网络组装测试,它是inNative实现的当前规范中指定的所有核心文件。浪费。

命令行

inNative命令执行您可以访问已安装的运行时的功能,因此您可以以多种方式编译、反编译或运行网络程序集模块。命令行接受格式为的网络程序集文件列表。wasm,。水或。根据提供的命令行选项将它们链接在一起。它还具有通过一些标志或命令行开关访问的其他功能。

innative使用说明

静态嵌入

对于大多数想要加载WebAssembly模块的应用程序,建议使用静态嵌入的inNative方法。尽管依赖于平台,但所有平台都必须:

1.下载或安装SDK。

2.链接到内部静态库

3.将includeinnative头文件添加到项目中。

4、包括固有偏差环境静态库

静态库不能包含其他静态库,因此需要包含innative。正在构建的根可执行文件或DLL中的lib。因为您是一个静态嵌入式库,所以您可以访问外部API中列出的所有静态函数。

Windows操作系统

静态库:innative。lib和innative-d.lib。

默认环境:innative-env.lib和innative-env-d.lib。

将静态库添加到项目的其他依赖项(对于Visual Studio)或等效的构建系统中。将默认环境库放在/bin/文件夹中,并确保它与应用程序一起分发。

创建自定义环境

nNative嵌入式环境实际上只是一个标准的C库,它向用它编译的WebAssembly模块公开C函数。但是,inNative还支持创建C库,通过基于名称处理规则导出特殊命名的函数来公开与网络程序集兼容的函数。

导出C函数

编译一个静态(或共享)库,将C函数导出到WebAssembly模块。如果您使用C ++,请务必使用extern & # 8220C & # 8221防止任何C ++名称修改。,只需在引用库的同时编译WebAssembly模块。

Windows示例

。/innative-cmd . exe your _ module . wasm-l your _ library . lib

因为Windows会。lib为DLL生成文件,您应该为DLL或静态库这样做。

示例Linux

。/innative-cmd your _ module . wasm-l your _ library . a

或者

。/innative-cmd your _ module . wasm-L your _ shared _ library

Linux有一个特殊的-L选项,告诉它链接到应该使用的共享库。请记住,在上面的示例中,实际的文件名是libyour_shared_library.so,这是链接器将在当前路径中查找的名称。有时,链接器可能对库路径很挑剔,在这种情况下,您可能希望指定整个绝对路径。

如果您已经按照上面的说明,现在可以使用基本的C导入方法来导入C函数:

(import " " " your _ function "(func $ your unc(结果i32)))

使用标准的C调用约定通常是一个好主意,但是对于C函数,您也可以使用其他调用约定。

导出WebAssembly函数

您也可以创建一个公开WebAssembly函数的库,但前提是这些函数遵循严格的规则集。“名称装饰”一文详细描述了名称装饰如何将模块+函数名称对转换为单个C符号:[module]_WA_[function]。相反,这个过程可以从C函数声明中获得WebAssembly模块+函数名对。

再次,外部& # 8220;C & # 8221如果你用的是C ++,一定要加。如果使用此函数编译库并将其添加到inNative命令行,则可以将其导入到WebAssembly模块中,如下所示:

(导入“您的_模块”“您的_函数”(func $ functest(param i f f32 i32)(结果I))

但是有一些限制:函数必须有默认的C调用约定!如果它使用任何其他调用约定,则行为是不确定和不安全的。此外,只能使用五种类型:

当然也可以把uint32_t替换为int32_t,把uint32 _ t替换为int_t就可以了。您也可以用void*替换任何指针类型。但是,void*必须映射到I位架构、i3232位架构,否则cref应该使用inNative的cref扩展。在将C函数签名与等效的WebAssembly匹配时要格外小心,因为签名不匹配会沙箱化或完全崩溃程序。

记住,WebAssembly函数比C函数更好——如果你把C函数导出伪装成WebAssembly导入,但是有另一个WebAssembly模块同名且函数定义相同,那么WebAssembly版本会胜出。在将C函数导出为WebAssembly导入时,请确保为虚拟模块选择唯一的名称。

收起介绍展开介绍
  • 安卓合集
  • 软件合集
  • 浏览器
  • 电脑管家
  • 安卓游戏
更多 >> 安卓合集安卓合计

热门推荐

装机必备软件