I have attached source for a simple program that returns an Internal Compiler Error with XE 22.214.171.124 [Intel(R) 64] due to Line 310: HelloWorld3Ret = HelloWorld3(HelloWorld3Input). Comment this out, and build is fine. I am using this with Visual Studio 2010. I am trying to implement a callback function, internal to the main program, that calls procedure inside a C DLL that was loaded in the main program. I thought that scope of variables in the main program extended to internal functions such as the one I have? My understanding may be incorrect here, but with the Compiler Error, I am a little stuck. I am unable to attach the DLL, but could send it to you if that helps.
I would appreciate your help here. Thanks!
Just a quick check (I don't have a 12.x compiler readily available) the code as presented compiles and runs (I presume as expected - see below) with our current 17.0 release so it doesn't appear there is a coding issue. If we can reproduce the internal error then perhaps a work around can be found. I assume you are intentionally using this older 12.x compiler, but if you could upgrade, that is advised and would allow you to move forward.
$ ifort u724118.f90 Intel(R) Visual Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 126.96.36.199 Build 20161005 Copyright (C) 1985-2016 Intel Corporation. All rights reserved. Microsoft (R) Incremental Linker Version 14.00.23026.0 Copyright (C) Microsoft Corporation. All rights reserved. -out:u724118.exe -subsystem:console u724118.obj $ .\u724118.exe Loading HelloWorld DLL Value of handle returned = 0 Error while loading Hello World DLL: The specified module could not be found. Format message failed for status 0000007E while loading Hello World DLL: error status = 0000007E