回 帖 发 新 帖 刷新版面

主题:[讨论]求fortran和VC大侠帮忙

各位大侠,请帮帮忙
   
    主函数是fftfault.f调用了其余的5个f文件,也调用了一个c文件——writegrd.c,编译通过,就是在link的时候报错。不知道什么意思。
在c文件中,# include "D:\softwares\GMT\src\gmt.h"
这是一个GMT程序中的头文件。

错误信息:
--------------------Configuration: fftfault - Win32 Debug--------------------
Linking...
fftfault.obj : error LNK2001: unresolved external symbol _WRITEGRD@52
writegrd.obj : error LNK2001: unresolved external symbol _GMT_write_grd
writegrd.obj : error LNK2001: unresolved external symbol _GMT_pad
writegrd.obj : error LNK2001: unresolved external symbol _GMT_grd_init
writegrd.obj : error LNK2001: unresolved external symbol _GMT_f_NaN
writegrd.obj : error LNK2001: unresolved external symbol _GMT_d_NaN
writegrd.obj : error LNK2001: unresolved external symbol _GMT_grdio_init
Debug/fftfault.exe : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.

fftfault.exe - 8 error(s), 0 warning(s)

是不是fortran与VC的链接出问题了啊?
我不太懂,请帮忙~

writegrd.c文件的头:

# include "D:\softwares\GMT\src\gmt.h"

/* Fortran callable routine to write a grd file in pixel registration */

void WRITEGRD(rdat,nx,ny,rlt0,rln0,dlt,dln,rland,rdum,title,fileout)

  float *rdat;            /* real array for output */
  int *nx;                /* number of x points */
  int *ny;                /* number of y points */
  double *rlt0;            /* starting latitude */
  double *rln0;            /* starting longitude */
  double *dlt;             /* latitude spacing */
  double *dln;             /* longitude spacing */
  double *rland;            /* land value */
  double *rdum;            /* dummy value */
  char  *title;           /* title */
  char  *fileout;         /* filename of output file */
  
  {
   函数内容
   }

不胜感激

回复列表 (共5个回复)

沙发

1、把WRITEGRD.C里的WRITEGRD 函数头贴出来。第一个ERROR跟它有关。
2、你用到了GMT库,里面应该有lib吧,你应该把这个LIB加到工程里。

板凳


lib是一个文件夹,怎么加到工程里面呢?
我在fortran的tools菜单下,options中的directories加了两个路径
D:\SOFTWARES\GMT\SRC(gmt.h所在文件夹)
D:\SOFTWARES\GMT\LIB
貌似没什么作用!

对了,报错是Win32 Debug,可是我用的是64位机。
不知道这个有没有关系~

谢谢大侠了,小女子感激不尽~

3 楼

[quote]lib是一个文件夹,怎么加到工程里面呢?[/quote]把目录里的文件加到工程里[quote]
我在fortran的tools菜单下,options中的directories加了两个路径
D:\SOFTWARES\GMT\SRC(gmt.h所在文件夹)
D:\SOFTWARES\GMT\LIB
貌似没什么作用![/quote][quote]对了,报错是Win32 Debug,可是我用的是64位机。
不知道这个有没有关系~[/quote]没关系:)[quote]

谢谢大侠了,小女子感激不尽~[/quote]不客气:)

4 楼

将lib文件加入工程中之后,错误少了几个

下面是错误信息 

--------------------Configuration: fftfault_lby - Win32 Debug--------------------
Linking...
fftfault_lby.obj : error LNK2001: unresolved external symbol _WRITEGRD_@52
writegrd.obj : error LNK2001: unresolved external symbol _GMT_pad
writegrd.obj : error LNK2001: unresolved external symbol _GMT_f_NaN
writegrd.obj : error LNK2001: unresolved external symbol _GMT_d_NaN
writegrd.obj : error LNK2001: unresolved external symbol _GMT_grdio_init
Debug/fftfault_lby.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.

fftfault_lby.exe - 6 error(s), 0 warning(s)

5 楼

重复一下1楼的第一个问题:
把WRITEGRD.C里的WRITEGRD 函数头贴出来。第一个ERROR跟它有关。

我来回复

您尚未登录,请登录后再回复。点此登录或注册