- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I've encountered a strange problem of module dependency. It seems that the compiler integrated in microsoft visual studio can not correctly parse the module dependency under specific conditions. I tries to isolate the problem and simplifies it as the below sample:
The Visual Studio solution contains two projects.
One is named "foo" for a Fortran static library, which contains three modules in seperated source files: a, b, and c. Module b uses module c, which uses module a. Below are the simplified source files:
MODULE a END MODULE a
MODULE b USE c END MODULE b
! -*- coding: utf-8 -*- ! 兵 MODULE c USE a END MODULE c
I should mention that file "c.f90" is utf-8 encoded and the last character of the second comment line is a Chinese character.
The other project in the solution is named "hello" for a C++ console executable. It is not related to project "foo". It can even be empty as the sample attached.
I open the solution with Visual Studio Professional 2015 + Intel Parallel Studio XE 2018 with Update 1, and build the project "foo". The output is as below:
1>------ 已启动生成: 项目: foo, 配置: Debug Win32 ------
1>Compiling with Intel(R) Visual Fortran Compiler 18.0.1.156 [IA-32]...
1>a.f90
1>b.f90
1>D:\mix\src\b.f90(2): error #7002: Error in opening the compiled module file. Check INCLUDE paths.
1>compilation aborted for D:\mix\src\b.f90 (code 1)
1>c.f90
1>
1>Build log written to "file://D:\mix\Debug\BuildLog.htm"
1>foo - 2 error(s), 0 warning(s)
Below is the BuildLog.htm:
Build Log
Build started: Project: foo, Configuration: Debug|Win32
Output
Compiling with Intel(R) Visual Fortran Compiler 18.0.1.156 [IA-32]...
ifort /nologo /debug:full /Od /warn:interfaces /module:"Debug\\" /object:"Debug\\" /Fd"Debug\vc140.pdb" /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\MSVS14\VC\\bin" /Qm32 "D:\mix\src\a.f90"
ifort /nologo /debug:full /Od /warn:interfaces /module:"Debug\\" /object:"Debug\\" /Fd"Debug\vc140.pdb" /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\MSVS14\VC\\bin" /Qm32 "D:\mix\src\b.f90"
D:\mix\src\b.f90(2): error #7002: Error in opening the compiled module file. Check INCLUDE paths.
USE c
------^
compilation aborted for D:\mix\src\b.f90 (code 1)ifort /nologo /debug:full /Od /warn:interfaces /module:"Debug\\" /object:"Debug\\" /Fd"Debug\vc140.pdb" /traceback /check:bounds /check:stack /libs:dll /threads /dbglibs /c /Qlocation,link,"C:\MSVS14\VC\\bin" /Qm32 "D:\mix\src\c.f90"
foo - 2 error(s), 0 warning(s)
Obviously the source files should be compiled in the order a.f90, c.f90, b.f90. But b.f90 is compiled before c.f90, which is the cause of the error. I've found two workarounds:
- In the source file c.f90, insert another ordinary comment just before the MODULE statement:
! -*- coding: utf-8 -*- ! 兵 ! MODULE c USE a END MODULE c
- Remove project "hello" from the solution.
In both ways, the project "foo" is successfully built. The output is as below:
1>------ 已启动生成: 项目: foo, 配置: Debug Win32 ------
1>Compiling with Intel(R) Visual Fortran Compiler 18.0.1.156 [IA-32]...
1>a.f90
1>c.f90
1>b.f90
1>Creating library...
1>
1>Build log written to "file://D:\mix\Debug\BuildLog.htm"
1>foo - 0 error(s), 0 warning(s)
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========
However, what's wrong with the original solution? Can anyone please shed some light? Thanks in advance.
Below is my detailed build environment:
Microsoft Visual Studio Professional 2015
版本 14.0.25420.01 Update 3
Microsoft .NET Framework
版本 4.6.01055已安装的版本: Professional
LightSwitch for Visual Studio 2015 00322-50050-03552-AA218
Microsoft LightSwitch for Visual Studio 2015Visual Basic 2015 00322-50050-03552-AA218
Microsoft Visual Basic 2015Visual C# 2015 00322-50050-03552-AA218
Microsoft Visual C# 2015Visual C++ 2015 00322-50050-03552-AA218
Microsoft Visual C++ 2015Application Insights Tools for Visual Studio 包 1.0
Application Insights Tools for Visual StudioIntel® Inspector 2018 Update 1
Intel® Inspector 2018 Update 1, (build 535335), Copyright © 2009-2017 Intel Corporation. All rights reserved.Intel® Parallel Studio XE 2018 Update 1 Composer Edition for C++ Windows* Package ID: w_comp_lib_2018.1.156
Intel® Parallel Studio XE 2018 Update 1 Composer Edition for C++ Windows* Integration for Microsoft* Visual Studio* 2015, Version 18.0.27.14, Copyright © 2002-2017 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.Intel® Parallel Studio XE 2018 Update 1 Composer Edition for Fortran Windows* Package ID: w_comp_lib_2018.1.156
Intel® Parallel Studio XE 2018 Update 1 Composer Edition for Fortran Windows* Integration for Microsoft Visual Studio* 2015, Version 18.0.0037.14, Copyright © 2002-2017 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
BTW, I use not Intel C++ compiler but MSVC. And the attachment contains the source files and the Visual Studio solution file.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@Xiong, Jun:
It looks like a bug in the Intel Fortran integration with Visual Studio. You may want to submit a support request at the Intel Online Service Center to direct the attention of the Intel Fortran team to this issue:
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page