关于VC中调用FORTRAN的问题
编号:QA001925
建立日期: 1999年10月28日 最后修改日期:1999年10月28日
所属类别:
Ann:
VC6.0
Win98
怎样在VC程序中调用Fortran程序?
回答:
很抱歉,我对WINDOWS编程不太了解。
关于VC中调用FORTRAN的问题,有以下两点供参考:
一、VC调用FORTRAN的方式
为便于编译和调试程序(尤其在VC和FORTRAN使用不同公司的编译器时),对于多语言编程的应用程序,通常以DLL来实现相互间的调用。可以把被调用的FORTRAN过程做到DLL中,并保证C与所调用的FORTRAN函数都具有相同的接口。
调用应采用动态加载(显式链接)方式。使用动态加载的应用程序必须使用LoadLibrary()函数加载DLL并得到一个模块句柄。然后使用该句柄调用GetProcAddress()函数获得所需调用的导出函数的指针,并通过该指针调用DLL中的导出函数。在使用完毕之后,还需调用FreeLibrary()函数释放加载的DLL。
二、要注意的问题
为使调用过程正确,在主程序中应注明被调用过程的属性为“C”属性(extern "C")。同样,FORTRAN过程的参数也都必须以INTERFACE语句指定各变元为“C”属性(var_name [C])。
指定子过程和变元属性非常重要,因为C与FORTRN调用子过程时的参数入栈次序正好相反,指定相同的属性可保证调用时参数正确传递。此外,由于C通过传值方式传递参数,FORTRAN则通过传址方式传递参数,对于大数据量的参数(如数组、结构变量)等,还需指定变量遗传址方式传递,以减小系统开销。
此问题由施正伟回答。
| |
|
|
| |
|
|