【问题标题】:C library linked to Ox链接到 Ox 的 C 库
【发布时间】:2023-12-15 06:40:01
【问题描述】:

我目前正在研究状态空间模型,the book I'm using 有一些非常有用的示例。

问题:

这些示例是用 Ox 编写的,这在一定程度上限制了它的可用性,特别是当我想使用 Interactive Brokers API 测试我的一些模型时,使用 C# / C++ 更实用。

更具体地说,它使用来自SsfPack 的示例,根据this article 是“状态空间例程库 用 C 语言编写并链接到 Ox 的建模和推理。

这是否意味着它可以直接在 C 中实现,还是在 Ox 中编写函数然后在 C 中调用它的更好方法,如this document 的 A1.4 所示?如果可以直接实现,那又是如何实现的呢?

对 C 有一定的经验而对 Ox 没有经验,这两个选项中的前者会更可取。

欢迎任何想法!

【问题讨论】:

  • 您是否有任何理由为 C 问题添加了 C++ 标签?您确定您使用的是 C,而不是 C++?它们是不同的语言,请选择您实际使用的语言!
  • 嗨 @Olaf,我添加 C++ 的原因与我在问题中提到的原因相同,即它在交互式代理 API 中的使用,我希望将这些模型纳入其中。我做感谢它们是不同的语言,但如果记忆对我有用(这里可能是错误的,我对此表示歉意),C 语言的各种变体之间有很大的兼容性。
  • 没有“C语言s”。只有 一种 C 语言标准化为 ISO 9899:2011。重复一遍:C++ 是一种不同的语言。相同的句法/语法并不意味着相同的语义。如果您使用 C++ 编译器进行编译,则这是 C++,不是 C
  • @Olaf 感谢您的澄清,我会相应地编辑标签。

标签: c state-space interactive-brokers ox


【解决方案1】:

似乎没有关于 Ssfpack C 例程的官方文档。相反,ssfpack Ox 文档非常详细(请参阅 Koopman 和 Doornik 的“SsfPack 3.0:状态空间形式模型的统计算法”)。

如果您是一位经验丰富的 C 开发人员,您可以观察 ox 头文件 ssfpack.h,您会发现一些“extern”声明的函数引用了位于 dll 的函数。这些函数可以在 C 中使用,但您需要自己找到函数的原型。对于参数数量未知/不恒定的函数,这可能非常棘手,甚至是不可能的。

因此,您可以直接从 C 中调用 Ssfpack,但是由于缺乏文档,这非常困难。

因此,我建议您在 Ox 中编写代码,然后从 C 或 C# 中调用它。这需要您学习 OX,一个很好的起点是 Doornik 和 Ooms (2006) 的 Introduction to Ox 一书。然后,您需要阅读 Doornik (2012) 的 Ox 7 开发者手册,了解如何从 C 调用 Ox。

【讨论】: