fifyao 发表于 2003-1-18 14:09:48

Jeffjia 发表于 2003-1-18 17:00:23

回复: 【求助】Jeffjia

    如果你一个完整的程序,可以通过VC调用,把接口参数传给FROTRAN就行了,Windows API 提供了这个函数好像是 ShellEXEC,你看看帮助吧!如果优先现成的源代码,改变成DLL也很容易的,你看看相关的书籍吧,一时半火也说不清楚!

Jeffjia 发表于 2003-1-18 17:04:05

回复: 【求助】Jeffjia

关于在 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 与 FORTRN 调用子过程时的参数入栈次序正好相反,指定相同的属性可保证调用时参数正确传递。此外,由于 C 通过传值方式传递参数,FORTRAN 则通过传址方式传递参数,对于大数据量的参数(如数组、结构变量)等,还需指定变量遗传址方式传递,以减小系统开销。
页: [1]
查看完整版本: 【求助】Jeffjia