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
展开
 我来答
好小爱新
2013-11-19 · TA获得超过806个赞
知道小有建树答主
回答量:864
采纳率:100%
帮助的人:560万
展开全部
sgn的参数必须是real*8的变量,因为没看到您的调用语句,猜想您调用sgn时可能把参数写成了k,比如:
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 广告
TfS(Together for Sustainability )是一个由化工行业的主要公司发起的联合倡议,旨在提高化工供应链的环境、社会和治理绩效。TfS的成员公司包括巴斯夫,拜耳,赢创工业,汉高,朗盛和苏威等。TfS的执行方法包括对供应... 点击进入详情页
本回答由上海楠贝提供
DungeonFvcker
2013-11-18 · 超过14用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:43万
展开全部
根据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变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式