卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章65595本站已运行4129

如何通过 SPVM 使用 Perl 中的 zlib(一个 C 库)

如何通过 spvm 使用 perl 中的 zlib(一个 c 库)

如何通过 SPVM 使用 Perl 中的 zlib(一个 C 库)。

查看将 zlib 绑定​​到 SPVM 的示例

SPVM 提供了一种绑定 C 语言库并从 Perl 调用它们的方法。

将 C 库绑定到 Perl 时,通常会编写 XS,但 SPVM 提供了另一种方法。

MyZlib.spvm

类 MyZlib {
  本机静态方法测试:void($ouf_file:string);
}

MyZlib.c

#include“spvm_native.h”
#include<stdio.h>

#include“zlib.h”

静态 const char* FILE_NAME = "MyZlib.c";

int32_t SPVM__MyZlib__test(SPVM_ENV* env, SPVM_VALUE* 堆栈) {

  void* obj_out_file = stack[0].oval;

  如果(!obj_out_file){
    return env-&gt;die(env, stack, "$ouf_file 必须被定义。", __func__, FILE_NAME, __LINE__);
  }

  const char* out_file = env-&gt;get_chars(env, stack, obj_out_file);

  char buf[]="0123456789abcdefghijklmnopqrstuvwxyzn";
  整数cnt = 0;
  gz文件 zp;

  zp = gzopen(out_file, "w9");
  如果(zp == NULL){
    return env-&gt;die(env, stack, "gzopen 失败。", "MyZlib.c", __func__, FILE_NAME, __LINE__);
  }

  for(cnt = 0;cnt 



<p>MyZlib.config<br></p>

<pre class="brush:php;toolbar:false">使用严格;
使用警告;

使用 SPVM::Builder::Config;

我的 $config = SPVM::Builder::Config-&gt;new_gnu99(file =&gt; __FILE__);

$config-&gt;add_lib('z');

$配置;

zlib.pl

使用严格;
使用警告;

使用FindBin;
使用 lib“$FindBin::Bin/lib”;

使用 SPVM 'MyZlib';

我的 $out_file = "$ENV{HOME}/tmp/output.gz";

SPVM::MyZlib-&gt;测试($out_file);

将输出一个压缩文件“output.gz”。

卓越飞翔博客
上一篇: 在“for”循环初始化子句中声明多个变量
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏