Связь с C в Microsoft Developer Studio 2000 Фортран PowerStation v 4 - PullRequest
2 голосов
/ 20 января 2012

Я пытаюсь выполнить тестовую сборку какого-то старого кода (отсюда и старого компилятора).Мне нужно связать файлы C и F, но я получаю следующую ошибку

ошибка LNK2001: неразрешенный внешний символ _flow

для каждого упоминания файла C вКод FНиже приведен пример того, как f-файлы ссылаются на файлы C.

  INTERFACE

    SUBROUTINE flow (from, to, when, howmuch)
      !MS$ATTRIBUTES C, ALIAS:'_flow' :: flow
      REAL from
      REAL to
      REAL when
      REAL howmuch
    END SUBROUTINE flow

  END INTERFACE

Я изо всех сил пытаюсь найти какие-либо предложения для используемого мной компилятора, но я подозреваю, что код в порядке (я уверен,модель была построена из этого кода ранее) и что-то не так с тем, что я делаю - мне интересно, если у меня нет соответствующих библиотек, чтобы сообщить компилятору, что я пытаюсь связать с C?Я попытался загрузить fortran.h и добавить это в файл моего проекта, но это не помогло, и когда я добавил

include 'fortran.h'

в соответствующие файлы f, это вызвало синтаксические ошибки.

вот также файл fortran.h, который я использую

// Определения для вызова FORTRAN 77 из C ++

typedef int     INTEGER;          // INTEGER              4 bytes
typedef float   REAL;             // REAL                 4 bytes
typedef double  DOUBLE_PRECISION; // DOUBLE PRECISION     8 bytes
typedef int     LOGICAL;          // LOGICAL              4 bytes

#include  <f77char.h>             // character            n bytes
#include  <f77cmplx.h>            // complex
#include  <f77matrx.h>            // fmatrix class

// values for LOGICAL
#define FALSE 0
#define TRUE  1

// Macros for portable handling of linkage and calling conventions
//#ifdef F77_STUB_REQUIRED
// Typically, this branch is for Unix computers

// C++ stub functions:
#define SUBROUTINE                    inline void
#define INTEGER_FUNCTION              inline INTEGER
#define REAL_FUNCTION                 inline REAL
#define LOGICAL_FUNCTION              inline LOGICAL
#define DOUBLE_PRECISION_FUNCTION     inline DOUBLE_PRECISION

// FORTRAN functions
#define SUBROUTINE_F77                extern "C" void
#define INTEGER_FUNCTION_F77          extern "C" int
#define REAL_FUNCTION_F77             extern "C" float
#define LOGICAL_FUNCTION_F77          extern "C" int
#define DOUBLE_PRECISION_FUNCTION_F77 extern "C" double

//#endif

// Array indexing differences between C++ and fortran
//#define B(i)  b[i-1]  

Спасибо за чтение - очень признателен за помощь, и дайте мне знать, если больше информациибыло бы полезно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...