24小时热门版块排行榜    

查看: 1129  |  回复: 1

mshwangg

至尊木虫 (正式写手)

[求助] win7 x64下用fortran power station调用fftw问题

最近做傅里叶变换,了解到fftw不错,但是fftw是linux下c写的,只能调用dll混合编程了。在网上看了一圈,也在www.fftw.org上溜达一遍,还是没有解决。
系统是win7 x64,编译器是fortran power station

www.fftw.org上提供了windows下调用fftw的方法,主要是c的。也有个非官方的fortran调用方法,提供一个fftw3fortran.lib,但是这个是Compaq Visual Fortran用的,fortran power station用这个lib编译的时候出错:fatal error LNK1106: invalid file or disk full: cannot seek to 0x3fb413f0。琢磨可能问题出在lib上,决定自己生成一个。参考fftw说明,用fortran power station下的lib.exe生成了lib文件,加入工程编译出现:error LNK2001: unresolved external symbol。还是lib文件的问题。于是琢磨用c编译器生成个lib试试,费了好大劲下载个microsoft visual studio 2010,安装,生成lib,写个vc小程序试验一下,通过。拿着这个lib文件到fortran power station下,还是unresolved external symbol。
郁闷+技穷了。求指导
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chembetsey

木虫 (小有名气)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
mshwangg: 金币+2, 有帮助, 有道理,尽管比较深奥。我再研究一下 2012-12-04 09:14:58
很可能是因为编译的时候用的选项一致。不同语言混合编程最需要注意的一点就是函数的调用约定。
请检查C编译器的如下选项:/Gd __cdecl 调用约定 /Gr __fastcall 调用约定  /Gz __stdcall 调用约定
以及Fortran编译时所用的选项,两者一致,编译出来的函数才可以互相调用。
2楼2012-12-04 04:51:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 mshwangg 的主题更新
信息提示
请填处理意见