如何在鸡舍方案的二进制可执行文件中包含一个模块

时间:2017-05-25 18:32:17

标签: chicken-scheme

我有(load "foo.import.scm"),当我编译一切正常时,只要我从同一目录执行程序。否则它抱怨无法找到" foo.import.scm"

Error: (open-input-file) cannot open file - No such file or directory: "foo.import.scm"

如果我这样做

csc -s foo.scm  -emit-import-library foo

然后

(import foo)

它编译好但后来抱怨

Error: (require) cannot load extension: foo

从其他目录运行时

如果我这样做

(use foo)

然后抱怨

Error: (require) cannot load extension: foo

当我从不同的目录运行它时。

将此模块加载到我的程序中以便将其包含在可执行文件中的正确方法是什么?应该将不同的旗帜传递给csc?文档并没有让我明白解决方案。

1 个答案:

答案 0 :(得分:0)

根据定义,

ma_782 = sqldf("SELECT t1.Id_indicator, t1.Hour, (SELECT AVG(t2.Value) FROM max_value_782 AS t2 WHERE t1.Hour = t2.Hour AND strftime('%w', t1.Date) = strftime('%w', t2.Date) AND (t2.Date - t2.Date) BETWEEN 1 AND 42 ) AS MA_by_weekday FROM max_value_782 AS t1;") 是一个运行时事物。它基本上是load(但需要注意的是CHICKEN也可以(eval (cons 'begin (read-all)))二进制load文件。 .so将始终从当前目录加载,除非您使用绝对路径。

如果要在已编译的程序中使用该模块,请不要加载导入库;当您load相应的模块时,编译器会自动执行此操作。

也许你可以解释一下你的项目结构?问题并不清楚到底在哪里。