5

我正在尝试确定可以将 rebol 用于一些编程任务的天气。我编写了一个小程序,它加载一个外部库并调用一个函数,该函数在某些参数中返回指针。当我运行该程序时,它会崩溃 rebol.exe。我希望有人可以帮助我。dll函数如下:

void xxx swe_utc_time_zone(int32 iyear, int32 imonth, int32 iday, 
int32 ihour, int32 imin, double dsec, double dtimezone, 
int32 *iyear_utc, int32 *imonth_utc, int32 *iday_utc, 
int32 *ihour_utc, int32 *imin_utc, double *dsec_utc)

这是我的小测试程序:

rebol []
astrology-lib: load/library %/c/sweph/bin/swedll32.dll
swe-utc-time-zone: make routine! [
   iyear [integer!]
   imonth [integer!]
   iday [integer!]
   ihour [integer!]
   iminute [integer!]
   dsec [decimal!]
   dtimezone [decimal!]
   iyear-utc [char*]
   imonth-utc [char*]
   iday-utc [char*]
   ihour-utc [char*]
   iminute-utc [char*]
   dsec-utc [char*]
] astrology-lib "_swe_utc_time_zone@60"
swe-utc-time-zone 2015 6 20 0 19 0 -4.5 none none none none none none

程序在我尝试调用该函数的最后一行崩溃。错误消息是“REBOL/View 系统已停止工作”

4

1 回答 1

2

您必须提供至少与要从调用中返回的指针大小相同的内存。

因此,您应该使用用以下内容初始化的单词而不是none

iyear-utc: make struct! [
    point [integer!]
] none

也许这些链接会给你更多的帮助地址转化更多的转化

于 2015-06-22T06:17:46.557 回答