【问题标题】:Pascal DLL in C++ aplication on ARM platformARM 平台上 C++ 应用中的 Pascal DLL
【发布时间】:2013-09-09 21:37:55
【问题描述】:

我有大量用 Pascal 编写的代码,我需要在带有 ARM9 处理器的嵌入式 PC 上运行的 C++ 应用程序中使用它。我的想法是将 Pascal 代码交叉编译为我想包含在我的 C++ 应用程序中的 dll 库。我尝试安装 Lazarus,但无法使用它的交叉编译器,我尝试将编译器直接安装到嵌入式 PC,结果相似。 C++ 交叉编译器完美运行。有什么方法可以让 Pascal 代码在不同平台上的 C++ 应用程序中工作?如果需要,我会提供任何其他信息。

其他信息:

  • 嵌入式 pc 用于极低温度,因此它具有运行精简 Linux 的低内存 (32MB),并且其闪存上只剩下一点可用空间(我必须将 SD 卡用于所有文件)

【问题讨论】:

  • 也许您可以考虑使用P2C Pascal to C 转换器?
  • 更清楚交叉编译器出了什么问题。它是什么样的目标(oabi,eabi?)
  • 我设法在 PC 和设备上编译应用程序,但是当我尝试运行它时,所有尝试都以“非法指令”错误结束。我放弃。即使我以某种方式让它工作,数据类型(如 Mats 提到的)和其他一些事情也会有更多问题。最后,将代码从 Pascal 重写为 C++ 实际上更快,然后尝试使这两种语言一起工作。感谢您的建议!

标签: c++ linux arm pascal


【解决方案1】:

我认为没有人可以最终回答您的问题,但有一些提示:

  1. 您需要找到一种在 C++ 和 Pascal 代码之间进行通信的方法。这可能只是将任何接口函数定义为 C 或 C++ 样式函数的情况。但是例如 Pascal 中的字符串通常不是标准的 C 或 C++ 风格的字符串,因此需要一些额外的处理才能正确解决。结构(Pascal 中的 RECORD)和类将需要更仔细地处理它们如何在 C++ 和 Pascal 代码之间进行接口 - 在大多数情况下,它将成为一个完整的编组解决方案(即转换为字节流,然后在另一端转换回正确的类型)。

  2. Pascal 代码的交叉编译依赖于 Pascal 编译器,该编译器与您的 Pascal 代码和您的目标相匹配。如果您无法将代码编译到正确的目标,项目的所有其他部分都会失败……Pascal 有一个“标准”,但大多数编译器都有一系列扩展。

  3. 您是否考虑过让 Pascal 代码成为一个独立的应用程序,以文件的形式生成结果,而不是直接与 C++ 代码接口?与尝试将一种语言连接到另一种语言相比,读取可以控制其格式的文件可能是一种更容易的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2011-01-24
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多