我有一个fortran语言的源程序,想在vc++中调用。我原来的做法是:先用visual fortran开发环境将这个fortran程序做成了一个dll文件,然后再++中调用,但是由于这个fortran程序中有写文件的操作,也就是说她在程序中用write函数向外部文件中写入了其计算出来的结果,所以在调试这个dll的时候,会异常退出,出错的地方就是在那些write函数调用的地方。
请问,是不是动态链接库中的函数中不能有文件写操作呢?还是我的dll哪个地方没有做好?请问有没有熟悉visual fortran开发环境的高手可以指点一二呢?
象我这种情况,该怎么样才能真正方便的实现调用呢?请指教,万分感谢!!!
一百分送上

解决方案 »

  1.   

    看看是不是需要其它文件支持
    用VS的Depends查看写好的动态库
      

  2.   

    使用以下的定义调用FORTRAN函数:
    extern "c" FUN(int,double,..) // 与你的FORTRAN 函数相同,
    //包含你的.FOR文件
    //因为FORTRAN 和 C/C++使用相同的调用方式
      

  3.   

    楼上的请问,你说的包含是什么含义?include吗?
    你这种方式是不是就不需要创建动态连接库?
      

  4.   

    能不能给一个简单的例子哪?
    我的信箱:[email protected]
    多谢
      

  5.   

    发不过去
    FORTRAN/BASIC/C/C++使用同一种的函数调用方式,好像是从左压入堆践
    如果你使用的是VC60/VISUAL FORTRAN的话,可以用一下的方式:
    1,将你的.FOR文件加入你的PROJECT.
    2,在你需要调用的地方定义如下:
     extern "C" FUN(...),与FORTRAN中的函数一一对应,包括参数
    3,在你的程序中可以直接调用了
    如:
    FUN(...);
    4,编译,建议使用FORTRAN90的语法,降低不必要的语法错误!
    希望以后互相交流;
    在一本书,<<visual Fortran ..>>名字机不清了,仔细招招吧,在图书馆
      

  6.   

    作成.exe文件,然后在vc中winexec("d:\\.exe")不就得了!
      

  7.   

    1 C语言调用Fortran模块的声明:
    extern void _stdcall SUBROUTINE(argList…);
    extern float _stdcall FUNCTION(argList…);
    2 C++语言调用Fortran模块的声明:
    extern “C” { void _stdcall SUBROUTINE(argList…); }
    extern “C” { float _stdcall FUNCTION(argList…); }