大家好,有个问题请教下。我有一个工程,用VC2005编译成了动态库,里面用到了STL的东西,导出方式如下#pragma once#ifdef DLL_API
#else
#define DLL_API extern "C" _declspec(dllimport)
#endifDLL_API int OVERLAP_(double *PB_x, double *PB_y, int *PB_Num,/*Input*/
  double *PH_x, double *PH_y, int *PH_Num,/*Input*/
  double *Vertex_x, double *Vertex_y, int *VertexNum/*Output*/);现在我想在FORTRAN POWER STATION 里面使用这个导出函数, 请问应该如何处理?谢谢!

解决方案 »

  1.   

    跨语言一般不要用STL等做接口,最好用基本数据类型做接口,这样其他语言才能调用
    其次,参考FORTRAN ,看如何加载普通DLL,一般都有教程的
      

  2.   

    谢谢楼上的指点,我没有使用STL做接口,就是如贴所示用的普通数据类型。按照网上的说法做了但是不行。
      

  3.   

    编译提示如下错误
    Linking...
    main.obj : error LNK2001: unresolved external symbol _MINN@8
    main.obj : error LNK2001: unresolved external symbol _MAXX@8
    main.exe : fatal error LNK1120: 2 unresolved externals
    Error executing link.exe.
    main.exe - 3 error(s), 0 warning(s)但是我已经把LIB的路径加到FORTRAN工程里面去了。而且这个动态库经过测试是正确的。 
      

  4.   

    还有我用其他软件看了DLL中的函数名,是对的。#pragma once#ifdef DLL_API
    #else
    #define DLL_API extern "C" _declspec(dllimport)
    #endifDLL_API int _MAXX(int a, int b);
    DLL_API int _MINN(int a, int b);这个函数应该很简单了。真郁闷!