wangye03219 发表于 2003-7-21 22:10:14

【求助】请问:如何在FORTRAN中调用C程序?

向高手请教!!

snowingwolf 发表于 2003-10-30 23:00:46

回复: 【求助】请问:如何在FORTRAN中调用C程序?

一般说来Fortran调C比较简单,因为Fortran是认函数名(文件名)的,
只需要注意一个问题,
将c的子程序接口名称变一下,这也只是Fortran和C定义习惯的不同

比如 有一个C的子程序
myc()
{
   ......
}

应该改为类似下面的形式
void myc_()
{
   myc1();
}
void myc1()
{
   ......
}
这里myc1()就是原来的myc(),

大概就是这样了,但形式可能有不同,可能编译系统定义有关,试试吧。

snowingwolf 发表于 2003-10-30 23:02:17

回复: 【求助】请问:如何在FORTRAN中调用C程序?

在fortran中调用时,如下
call myc()

yexm 发表于 2003-10-31 09:16:54

回复: 【求助】请问:如何在FORTRAN中调用C程序?

看得不是很明白,
void myc_() 有什么作用?
为什么要把myc()改为myc1()?
能不能举个详细点的例子?

snowingwolf 发表于 2003-10-31 12:48:43

回复: 【求助】请问:如何在FORTRAN中调用C程序?

void myc_()的作用主要是让C的函数定义习惯与Fortran的一致,在一些大型级上可能不需要这样,不过一般的编译器都需要这样写。

至于myc()->myc1()主要是防止函数名重复,可能不需要改的,你试试。

比如在Linux下,
按照上面所说的改好C子程序后,编译成.o的文件
再与主程序连接起来。

主程序调用时就和fortran子程序一样了,当然还要注意数据类型的问题。

snowingwolf 发表于 2003-10-31 12:58:38

回复: 【求助】请问:如何在FORTRAN中调用C程序?

附一个例子

snowingwolf 发表于 2003-10-31 13:01:49

回复: 【求助】请问:如何在FORTRAN中调用C程序?

另外,我也有一个问题

在C调Fortran子程序时,相应的头文件该如何写阿?
C是认函数的,我也看过一些例子,可是太乱了,

不知道谁有经验以及简单例子的,奉献出来吧,
万分感谢!

liudao 发表于 2008-3-19 15:17:04

很好的帖子,解了心头之惑

ajacky007 发表于 2009-2-27 19:33:09

又学了一招,很不错呀

qwer2007 发表于 2010-6-7 12:14:52

感谢高手出手解答

along_doo 发表于 2010-10-22 21:59:50

谢谢!顶起来!
页: [1]
查看完整版本: 【求助】请问:如何在FORTRAN中调用C程序?