Fortran Coder

标题: intel fortran读取csv文件出现的问题 [打印本页]

作者: 龙行天下    时间: 2015-1-27 20:14
标题: intel fortran读取csv文件出现的问题
求助!
我编写csv文件的一段代码,能够正常调试、编译、生成。
调试时是正常的。
但生成的exe文件却不能使用。
出现的问题是:
点击可执行文件,提示“无法启动此程序,因为计算机中丢失libifcoremd.dll”,
我在网上找了一下解决方法,后来用百度电脑专家修复了缺失的dll;
但是,修复后,继续出现问题,提示:“应用程序无法正常启动(0xc00007b)。请单击“确定”关系应用程序”,
网上的方法主要是说DirectX出现问题,我下载了DirectX修复工具,检查发现DirectX没有问题。
请问各位大神,有没有碰到这样的问题。


PS:我执行其他读取txt的fortran编译的exe是没有问题的。
另附代码如下:
[Fortran] 纯文本查看 复制代码
PROGRAM MAIN
    IMPLICIT NONE
    INTEGER::STATUS    REAL::RANGENORTH,RANGEWEST,RANGESOUTH,RANGEEAST
    REAL::LAT,LON,VALUE
    OPEN(UNIT=1201501,FILE="gsmap_mvk_v52221_20070101_daily_p12Z-11Z_01_AsiaEE.csv")
    OPEN(UNIT=1201502,FILE="RANGE.TXT")
    OPEN(UNIT=2201501,FILE="20070101.TXT")
    READ(1201501,*)
    READ(1201502,*)RANGENORTH,RANGEWEST,RANGESOUTH,RANGEEAST
    DO
        READ(1201501,*,IOSTAT=STATUS)LAT,LON,VALUE
        IF(STATUS/=0)EXIT
        IF(LAT<=RANGENORTH.AND.LAT>=RANGESOUTH.AND.LON>=RANGEWEST.AND.LON<=RANGEEAST)THEN
            WRITE(2201501,'(3F10.2)')LON,LAT,VALUE
        END IF
    END DO
END PROGRAM MAIN



作者: fcode    时间: 2015-1-27 20:43
请把你编译后的exe传上来
作者: 龙行天下    时间: 2015-1-27 20:55
上传在压缩包里了

PickOutDataFromDataset.zip

8.09 KB, 下载次数: 6


作者: li913    时间: 2015-1-27 22:09
代码没问题,exe在我电脑也能运行,只提示找不到csv文件。
作者: 龙行天下    时间: 2015-1-27 22:38
csv和range.txt文件,麻烦帮我看看

Release.zip

207.13 KB, 下载次数: 4


作者: fcode    时间: 2015-1-28 09:09
在我电脑上也能完美运行。得到 20070101.txt

丢失libifcoremd.dll 的话,可能是某些文件夹应该添加在 Path 路径的问题。本来挺容易解决的。

但是你用,百度电脑专家修复了缺失的dll,我就不知道它是如何 “修复” 的了。建议你全盘搜索 libifcoremd.dll ,然后删除,之后重新安装 IVF
作者: 龙行天下    时间: 2015-1-28 09:36
本帖最后由 龙行天下 于 2015-1-28 09:41 编辑

全盘搜索 libifcoremd.dl结果



这个能直接全选,然后delete吗?


——————————————
想了一下,我按时间排一下,把昨天的那个删掉,先去试试


作者: pasuka    时间: 2015-1-28 09:41
龙行天下 发表于 2015-1-28 09:36
全盘搜索 libifcoremd.dl结果

lz的OS是64bit,那么ivf编译的程序是64还是32?
这个明确后,再去ivf安装目录把对应的dll拷贝出来
作者: 龙行天下    时间: 2015-1-28 10:10
fcode 发表于 2015-1-28 09:09
在我电脑上也能完美运行。得到 20070101.txt

丢失libifcoremd.dll 的话,可能是某些文件夹应该添加在 Path ...

我将搜索到的libifcoremd.dll,能删的都删掉了
然后重装IVF
再运行,回到最初的问题

3.jpg (51.11 KB, 下载次数: 448)

3.jpg

作者: 龙行天下    时间: 2015-1-28 10:13
pasuka 发表于 2015-1-28 09:41
lz的OS是64bit,那么ivf编译的程序是64还是32?
这个明确后,再去ivf安装目录把对应的dll拷贝出来 ...

是的,我的系统是64bit,编译时选择的是release + win32
我刚才把syswow64、system中的libifcoremd.dll都删了,重装ivf后,
不论选择win32还是x64,生成的可执行文件,都提示如下





作者: 龙行天下    时间: 2015-1-28 10:42
这会儿又瞎捣鼓了一下

重新安装IVF后

打开C:\Program Files (x86)\Intel\Composer XE 2013 SP1\redist\ia32\compiler

先把libifcoremd.dll拷贝的system32

exe还是提醒libifcoremd.dll缺失

又把libifcoremd.dll拷贝的system

这次不提醒libifcoremd.dll缺失,变成提醒libmmd.dll缺失

同样,把libmmd.dll拷贝的system中

这样的话,release\win32 配置下的exe是可以运行了

紧接着,我试了一下,release\x64情况下的exe

还是有问题,它提醒的问题如下:




然后,我打开C:\Program Files (x86)\Intel\Composer XE 2013 SP1\redist\intel64\compiler
我把libifcoremd.dll拷贝的sysWOW64,


发现问题依旧。。


再然后,还是把64下面的ibifcoremd.dll和libmmd.dll拷贝的system


这样的话,x64配置下的exe可以正常运行了,相应的,win32配置下的不能正常运行。。


请问两位,win32与x64的只能二选其一了吗?

作者: pasuka    时间: 2015-1-28 10:59
龙行天下 发表于 2015-1-28 10:42
这会儿又瞎捣鼓了一下

重新安装IVF后

为啥要拷贝到系统目录下,直接和exe搁一个目录不就结了。。。
查看dll的依赖关系,下载dllexp
作者: 龙行天下    时间: 2015-1-28 11:39
pasuka 发表于 2015-1-28 10:59
为啥要拷贝到系统目录下,直接和exe搁一个目录不就结了。。。
查看dll的依赖关系,下载dllexp ...

嘿嘿,不可能编译一个程序就把它们拷贝一次吧
感觉还是配置问题了
dllexp很不错啊
谢啦
作者: fcode    时间: 2015-1-28 13:02
这些 DLL 的关系应该由编译器厂家来协调,所以最好的办法其实是,卸载 ivf,重新安装一次。
作者: pasuka    时间: 2015-1-28 13:29
龙行天下 发表于 2015-1-28 11:39
嘿嘿,不可能编译一个程序就把它们拷贝一次吧
感觉还是配置问题了
dllexp很不错啊

非要ivf不可的话,参考ivf的32和64的dos界面bat,看看里面的环境变量如何定义,或者干脆在dos下面编译,dll的依赖关系也就预先处理好了
作者: 龙行天下    时间: 2015-1-28 14:00
谢谢两位
早上偷懒,没有卸载旧的,直接重新安装

刚才把旧的版本统统卸掉,再重装IVF

问题完美解决

再次感谢两位





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2