创建ruby C++扩展

 ttarm_33218389 发布于 2023-02-13 04:31

我使用C++类创建了一个示例ruby扩展.当我没有解析值时,它工作正常.但是当我解析参数时它显示错误.这是我的代码.

C++头文件

  #ifndef CIRCLE_H_
  #define CIRCLE_H_

class Circle {
    public:
        Circle(float radius):_radius(radius) {}
        float getArea() { return 3.14159 * _radius * _radius; }

    private:
        float _radius;

};

CPP文件.

  #include
  #include"Circle.h"

  VALUE method_test(VALUE y){
   double x= NUM2DBL(y);
   Circle *cir= new Circle(x);
   return DBL2NUM(cir->getArea());
  }

  extern "C" void Init_Test(){
   VALUE lemon = rb_define_module("Test");
   rb_define_method(lemon, "test", (VALUE(*)(ANYARGS))method_test,1);
  }

extconf.rb

    require 'mkmf'
    have_library( 'stdc++' );
    $CFLAGS << " -Wall"
    create_makefile( 'Test' );

run.rb

    require 'rubygems'

    require 'Test'

    include Test

    puts test(7)

当我执行run.rb时,它显示一个错误.

          run.rb:7:in `test': can't convert Object into Integer (TypeError)
          from run.rb:7:in `
'

请帮我解决这个问题.谢谢.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有