当前位置: 首页 > 面试题库 >

带Mono的自定义函数SQLite

姜博
2023-03-14
问题内容

有没有一种方法可以使用Mono添加SQLite自定义函数?(Mono.Data.Sqlite)

我尝试添加距离函数,该函数返回两个地理位置之间的距离

    [SqliteFunctionAttribute(Name = "distance", Arguments = 4, FuncType = FunctionType.Scalar)]
    class SqliteDistance : SqliteFunction
    {
        public override object Invoke(object[] args)
        {
            double radius = 6367;
            double lat1 = System.Convert.ToDouble(args[0]);
            double lng1 = System.Convert.ToDouble(args[1]);
            double lat2 = System.Convert.ToDouble(args[2]);
            double lng2 = System.Convert.ToDouble(args[3]);

            return radius * 2 * Math.Asin( Math.Min(1, Math.Sqrt( ( Math.Pow(Math.Sin((lat2* (Math.PI / 180) - lat1 * (Math.PI / 180) ) / 2.0), 2.0) + Math.Cos(lat1* (Math.PI / 180)) * Math.Cos(lat2* (Math.PI / 180)) * Math.Pow(Math.Sin(( lng2* (Math.PI / 180)-lng1* (Math.PI / 180)) / 2.0), 2.0) ) ) ) ); 
        }
    }

它给了我一个错误:

在仅使用–
aot的情况下尝试JIT编译方法’(将包装器本地化为托管对象)Mono.Data.Sqlite.SqliteFunction:ScalarCallback(intptr,int,intptr)’。有关更多信息,请参见http://docs.xamarin.com/ios/about/limitations。


问题答案:

查看错误报告页面的 Reverse Callbacks
段落:实际上,您需要将MonoPInvokeCallbackAttribute属性应用于该方法(并且必须将其设置为静态)。

这是对iOS设备的限制,因为它们不支持JIT编译器。



 类似资料:
  • 我做了这个自定义函数,并把它放在全局之外,这通常会工作。我也试着在主异步木偶函数中移动它,但也不起作用。这是一个简单的函数。在每个page evaluate函数中,我调用它并传递选择器。但是,它的说法没有定义和promise拒绝,这是奇怪的,因为函数不是promise....请帮助 我尝试将函数转换为异步函数,添加了一个新的参数页。然后,我将async添加到我的评估函数中,然后将puppeteer

  • XQuery提供编写自定义函数的功能。 下面列出了创建自定义函数的准则。 使用关键字来定义函数。 使用当前XML架构中定义的数据类型 将函数体包含在花括号内。 使用XML命名空间前缀函数的名称。 创建自定义函数时使用以下语法。 语法 示例 以下示例显示如何在XQuery中创建用户定义的函数。 XQuery表达式 输出结果 - 验证结果 要测试上述函数,用上面的XQuery表达式替换books.xq

  • 我在理解group_by如何在tidyverse中工作时遗漏了一些东西。示例将阐明: 我已经创建了下面的函数,它采用很少的参数,并计算tibble内部的最佳权重(可能不是最漂亮的,但似乎工作): 当我在tibble中只有一个组时,这个函数可以很好地工作。我创建函数的方法是尝试通过在一个函数上进行测试来实现它,希望在我稍后对数据进行切片时它会起作用。 然后,我希望可以使用mutate为我的多个组创建

  • 2. 自定义函数 我们不仅可以调用C标准库提供的函数,也可以定义自己的函数,事实上我们已经这么做了:我们定义了main函数。例如: int main(void) { int hour = 11; int minute = 59; printf("%d and %d hours\n", hour, minute / 60); return 0; } main函数的特殊之处在于执行程序时它自动

  • 我正在尝试编写一个简单的数据库函数来从表中检索值。 MariaDB只是给出以下消息 在“开始声明标题VARCHAR DEFAULT”附近,在第2行的标题FR中选择MyTitle 我看不出有什么不对。请帮忙。 谢谢你

  • 返回自定义的 coalesce 函数,该函数返回从提供的参数验证函数返回 true 的第一个参数。 使用 Array.find() 返回从提供的参数验证函数返回 true 的第一个参数。 const coalesceFactory = valid => (...args) => args.find(valid); const customCoalesce = coalesceFactory(_