【问题标题】:common blocks, FORTRAN,and DLLs公共块、FORTRAN 和 DLL
【发布时间】:2011-03-30 17:40:04
【问题描述】:

我是一名编程的建模师...我永远不会称自己为程序员,但我使用 C# 和 FORTRAN 进行编程。我有一个 FORTRAN 模型,我通过 dll 连接到一些 C# 代码。我发现我必须有一个公共块才能将变量保存在 dll 的内存中。我还发现我不能使用多个包含语句......我的公共变量的包含文件都是未标记的。 Chapman (2008)“科学家和工程师的 FORTRAN 95/2003”声明“不应该使用未标记的 COMMON 语句......”。

如何确保我的公用文件中没有损坏的内存?我想我可以进行实验,但我希望对此有一些合理的建议。我在 Microsoft Visual Studio 2008 中使用 Lahey-F 7.2 版

任何人,有什么想法吗?

【问题讨论】:

    标签: dll fortran fortran-common-block


    【解决方案1】:

    作为一名建模程序员,我想知道这正是 Chapman 声明不应使用未标记的 COMMON 的原因。据我所知,空白/未命名的公共块是全局的,必须在主程序中定义。

    确定这一点的唯一方法可能是制作一个简单的 Fortan DLL,然后对其进行反汇编以查看它的作用/公共块的放置位置。

    当您尝试使用命名的公共时,如果您可以粘贴错误示例等,这将很有用。一旦我们确切地了解什么是行不通的,可能会有更好的解决方案。

    【讨论】:

    • 感谢发帖。是的,我同意使用模块;我的程序是围绕模块构建的。但是,模块(具有本地和全局(公共)变量)在 dll 中使用时不会留在内存中。至少,我无法证明这一点。如果有人知道如何将私有和公共变量保存在 dll 中的活动内存中,请告诉我如何。根据我的发现,文档并没有证明这一点。
    • @M.S.B 谢谢 - 这就是我对 Fortan 7/IV 的一般记忆,除了我们通常使用 COMMON /DATAPOOL/。 @David 我对 DLL 的经验和理解使我相信,唯一的决定方法是生成一个小的示例 DLL 并将其与源代码一起发布,以便我可以查看反汇编。
    猜你喜欢
    • 1970-01-01
    • 2012-05-04
    • 2012-04-21
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 2018-05-21
    相关资源
    最近更新 更多