fortran 编译出错 error LNK2001:unresolved external symbol_SGN@4 急
fortran编了程序,连接没错,就是编译出现了以下错误errorLNK2001:unresolvedexternalsymbol_SGN@4fatalerrorLNK1...
fortran编了程序,连接没错,就是编译出现了以下错误
error LNK2001:unresolved external symbol_SGN@4
fatal error LNK1120: 1 unresolved externals
里面的SGN是我在另外一个module中,编写的函数
integer function sgn(d)
implicit none
real*8:: d
if(d > 0.D0)then
sgn = 1
else if(d == 0.D0)then
sgn = 0
endfunction sgn
后来我又在一个subroutine调用了sgn 如下
subroutine Exponent(nmax, height, width, xoffset,yoffset, eup, elow,section)
implicit none
integer, intent(in) :: nmax
real *8, intent(in) :: height, width, xoffset, yoffset
real *8, intent(in):: eup,elow
real *8 :: section(2,nmax)
real *8 :: t(nmax)
integer :: k(nmax)
integer i
integer,external :: sgn
enddo 展开
error LNK2001:unresolved external symbol_SGN@4
fatal error LNK1120: 1 unresolved externals
里面的SGN是我在另外一个module中,编写的函数
integer function sgn(d)
implicit none
real*8:: d
if(d > 0.D0)then
sgn = 1
else if(d == 0.D0)then
sgn = 0
endfunction sgn
后来我又在一个subroutine调用了sgn 如下
subroutine Exponent(nmax, height, width, xoffset,yoffset, eup, elow,section)
implicit none
integer, intent(in) :: nmax
real *8, intent(in) :: height, width, xoffset, yoffset
real *8, intent(in):: eup,elow
real *8 :: section(2,nmax)
real *8 :: t(nmax)
integer :: k(nmax)
integer i
integer,external :: sgn
enddo 展开
2个回答
展开全部
sgn的参数必须是real*8的变量,因为没看到您的调用语句,猜想您调用sgn时可能把参数写成了k,比如:
xxx=sgn(k(i))
之类的~~~~
xxx=sgn(k(i))
之类的~~~~
追问
integer,external :: sgn
do i = 1,nmax
t(i) = i*(2.0)*pi/real(nmax))
section(1,i) = (abs(cos(t(i)))**(2.0/eup))*width*sgn(cos(t(i)))
enddo
这样调用不行吗?怎么改呢?
追答
cos(t(i))返回的是real*4
这样写吧:
sgn(real(cos(t(i)),8))
上海楠贝
2024-04-15 广告
2024-04-15 广告
TfS(Together for Sustainability )是一个由化工行业的主要公司发起的联合倡议,旨在提高化工供应链的环境、社会和治理绩效。TfS的成员公司包括巴斯夫,拜耳,赢创工业,汉高,朗盛和苏威等。TfS的执行方法包括对供应...
点击进入详情页
本回答由上海楠贝提供
展开全部
根据c编译器报错经验来看,在subroutine里找不着sgn。我也不懂Fortran,不知道是要include什么还是要import什么
追问
integer,external :: sgn
do i = 1,nmax
t(i) = i*(2.0)*pi/real(nmax))
section(1,i) = (abs(cos(t(i)))**(2.0/eup))*width*sgn(cos(t(i)))
enddo
这样调用不行吗?怎么改呢
追答
我不懂Fortran的语法……我只是觉得编译器想告诉你它执行的时候找不着sgn,可能执行路径上和默认的库路径上都没有包含sgn变量
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询