2010-08-17 44 views
2

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

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

任何人,任何想法?

回答

0

作为一名程序员,他模拟我想知道的正是为什么Chapman声明不应该使用未标记的COMMON。从我记得的空白/未命名的公共块是全局性的,必须在主程序中定义。

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

此外它会很有用,如果你可以粘贴错误的例子等,当你尝试使用命名的公共。一旦我们明确知道哪些工作没有成功,可能会有更好的解决方案。

+0

谢谢,我会研究它。 – DavidAS 2010-08-17 15:02:44

+0

感谢发布。是的,我同意使用模块;我的程序是围绕模块构建的。但是,在dll中使用模块(具有本地和全局(公共)变量)不会留在内存中。至少,我还没有证明这一点。如果有人知道如何将私人和公共变量保存在dll的活动内存中,请告诉我如何。根据我的发现,文件没有证明这一点。 – DavidAS 2010-08-17 18:47:00

+0

@ M.S.B谢谢 - 这就是我通常记得Fortan 7/IV的原因,除了我们通常使用的是COMMON/DATAPOOL /。 @David我的经验和对DLL的理解让我相信决定这一点的唯一方法是生成一个小的示例DLL并将其与源一起发布,以便我可以查看反汇编。 – 2010-08-18 13:05:25