草庐IT

c++ - 如何编写用于在 C++14 中调用 Fortran 函数的通用包装器(按引用调用 --> 按值调用)

我经常需要从我的C++代码中调用一些Fortran例程。就我而言,Cheader始终可用并包含诸如之类的签名doublefFortran(int*a,int*b,double*someArray,int*sizeOfThatArray)我的问题是:是否可以编写通用的C++14包装器fortranCall(可能使用模板元编程)在必要时获取地址,然后调用fortran函数像这样doublesomeArray[2]={1,4};doubleresult=fortranCall(fFortran,4,5,someArray,sizeof(someArray)/sizeof(someArray[

android - ARM/Android 中的 Fortran 编译器

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion是否有适用于Android操作系统运行机器的Fortran编译器。我发现有一些Fortran到C的转换器,然后可以在C中编译,但我想知道是否有用于ARM/RISC机器或Android操作系统的编译器,如gfortran。

c++ - C、C++ 或 Fortran 中的多元正态 cdf

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭8年前。Improvethisquestion是否有开源软件可以计算C、C++或Fortran中高斯分布的多变量(维度大于3,不是双变量或三变量)数值cdf?我相信IMSL做到了;http://www.roguewave.com/portals/0/products/imsl-numerical-libraries/c-library/docs/7.0/html/cstat/default.htm?turl=mu

c++ - 在 C++ 中使用类似 Fortran 的格式迭代文本文件

我正在制作一个处理txt文件数据的应用程序。想法是txt文件可能有不同的格式,应该将其读入C++。一个例子可能是3I2,3X,I3,应该这样写:“首先我们有3个长度为2的整数,然后我们有3个空位,然后我们有1个长度的整数3.是否最好遍历文件,生成行,然后将行作为字符串遍历?什么是巧妙地迭代而忽略3个要忽略的点的有效方法?例如101112---100102113---101103114---102到:10,11,12,10010,21,13,10110,31,14,102 最佳答案 KyleKanos提供的链接很好;*scanf/*p

c++ - 从 C++ 调用带有可选参数的 Fortran 子例程

如何在使用可选参数的C++header中引用Fortran函数?我会在标题中为每种可能的调用组合提供一个原型(prototype)吗?或者这甚至可能吗?例如,Fortran:subroutinefoo(a,b,c)bind(c)real,intent(in),optional::a,b,c...endsubroutinefoo 最佳答案 这是不可能的,至少是可移植的,除非你创建子例程bind(C)。一旦你让它成为bind(C),它只是传递一个指针,在C端可以为NULL。subroutinefoo(a,b,c)bind(C,name=

windows - 将 Fortran 程序与任意二进制文件链接

我想将Fortran程序与任意二进制文件链接起来。我正在使用gfortran,我找到了here使用gcc使用objcopy可以轻松完成相同的任务来自binutils。但是,我无法让它与gfortran一起工作。这是一个使用gcc的简单示例首先,build.c构建数据文件,只包含数字pi=3.14的二进制表示...#include#includeintmain(){FILE*f;doublex=M_PI;f=fopen("data.bin","wb");fwrite(&x,sizeofx,1,f);fclose(f);return0;}然后是cbin.c,打印数字。#includeext

c - 在 Windows : "main already defined" 上与 pgi 一起编译 C/Fortran 代码时出现问题

下面是我想一起编译的C/Fortran文件的玩具示例。C文件voidtestfunc();intmain(void){testfunc();}Fortran文件subroutinetestfunc()bind(C,name="testfunc")write(*,*)"HelloWorld!"endsubroutine使用gcc,我可以用命令生成一个二进制文件gfortran-omy_progmain.ctestfunc.f90但是,当我尝试使用pgf90时pgf90-omy_progmain.ctestfunc.f90我收到以下错误消息:main.obj:errorLNK2005:ma

python - Fortran 源代码但未找到 Fortran 编译器

我正在尝试在Python中安装pyOpt,但出现此错误:error:libraryalgencanhasFortransourcesbutnoFortrancompilerfound我在Windows7上使用Anaconda,我尝试安装“MicrosoftVisualC++CompilerforPython2.7”,但我遇到了同样的错误。 最佳答案 您应该安装Fortran编译器,例如gfortran(通过Windows上的MinGW/Cygwin)。参见here了解详情。C++编译器在这里无济于事。MinGW包括gfortran作

c++ - 将 FORTRAN 转换为 C/C++

作为我最后一年项目的一部分,我需要将一些FORTRAN代码转换为C或C++(无论哪种语言,只要我能理解它,并且我能理解C风格的语言)。我发现了f2c,一个据称将FORTRAN转换为C的程序,并尝试按照说明安装它,方法是将makefile.vc文件保存在我的驱动器上,然后执行copymakefile.vcmakefilenmake(这是包含在f2cdownloadpage中的关于安装f2c的README文件的一部分)Tocompilef2conLinuxorUnixsystems,copymakefile.utomakefile,editmakefileifnecessary(seeth

c - 测试 Fortran IPC : Sending 4 MiB of data using TCP/IP is equally fast as sending 100 B

我目前正在测试在两个Fortran程序之间有效传递数据的不同方法。我试过写入文件、管道和TCP/IP。我的测试结果如下所示。请注意,图表仅显示4*10^4B的时间,因为这是我为文件和管道设置的高度。4*10^6B测试只针对TCP/IP程序进行。为了测试执行时间,我使用了大多数Linux发行版中的time程序,即:time./program。然后我使用real值作为我的时间。很明显,写入文件和使用管道是线性的。有一些开销,但它非常简单。然而,TCP/IP协议(protocol)似乎不受影响-无论数据量如何。实际发生的是:B.f90启动并调用server.c,在localhost:5555