<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Pass Module Variables From Main Program to a DLL in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Pass-Module-Variables-From-Main-Program-to-a-DLL/m-p/1060482#M117392</link>
    <description>&lt;P&gt;I am trying to pass some module variables from a main Fortran program to a dll.&amp;nbsp;&amp;nbsp;It gets compilicated in that these files get linked with ANSYS but I&amp;nbsp;think I'm missing something&amp;nbsp;fundamental with&amp;nbsp;my Fortran programs or dll creation.&amp;nbsp; I've created a simple example to demonstrate this.&lt;/P&gt;

&lt;P&gt;I have been able to compile, link, and run but I'm not getting the module variables with the right values in my dll.&amp;nbsp; Since this does link with ANSYS I am not using A visual studio project.&amp;nbsp; I use some simple scripts to compile and link.&lt;/P&gt;

&lt;P&gt;Here is the dll.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; module my_mod&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;contains&lt;/STRONG&gt;&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLEXPORT :: my_print&lt;BR /&gt;
	! can't compile with this and use mod_seven statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLIMPORT :: seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; write(*,*) ' ===== MyPrint called from USolBeg'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; write(*,*) ' ===== modified after creating custom ANSYS executable'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) ' SEVEN in my_mod.dll = ', seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end module my_mod&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Here is the module I compile with my main program (and I have to include the mod_seven.obj in the dll creation)&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; module mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLEXPORT :: seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer&amp;nbsp;&amp;nbsp; seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contains&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; seven = 7&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) "In Module mod_seven, setting SEVEN to ",SEVEN&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;end module mod_seven&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;This is a subroutine in the "main" program that is called by ANSYS.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;*deck,USolBeg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USERDISTRIB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lcase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jas&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine USolBeg&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;USE my_mod&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USE mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;#include "impcom.inc"&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;#include "syspar.inc"&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;call set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) ' SEVEN in USolbeg.f = ', seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;My latest attempt gives me this for output&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp;In Module mod_seven, setting SEVEN to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;BR /&gt;
	&amp;nbsp; SEVEN in USolbeg.f =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;
	&amp;nbsp; ===== MyPrint called from USolBeg&lt;BR /&gt;
	&amp;nbsp; ===== modified after creating custom ANSYS executable&lt;BR /&gt;
	&amp;nbsp; SEVEN in my_mod.dll =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;I believe module mod_seven is accessing 2&amp;nbsp;different memory locations.&amp;nbsp; One for the main program and 1 for the dll.&lt;/P&gt;

&lt;P&gt;I'd like the main program and the dll to use the same location.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Here is how I am compileing and linking:&lt;/P&gt;

&lt;P&gt;1. compile mod_seven.f and usolbeg.f (these are in directory 1_upf)&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\2_dll;%INCLUDE%&lt;BR /&gt;
	set LIB=..\2_dll;%LIB%&lt;BR /&gt;
	ifort -D__EFL -DNOSTDCALL -DARGTRAIL /O2 -DPCWIN64_SYS -DPCWINX64_SYS -DPCWINNT_SYS -DCADOE_ANSYS /fpp /4Yportlib /auto /c /Fo.\ /DFORTRAN /MD /watch:source %%P &amp;gt;&amp;gt;compile.log&amp;nbsp; 2&amp;gt;&amp;amp;1&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;2.&amp;nbsp; compile dll file my_mod.f&amp;nbsp; (these are in directory 2_dll)&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\1_upf;%INCLUDE%&lt;BR /&gt;
	set LIB=..\1_upf;%LIB%&lt;BR /&gt;
	ifort /c /align:common my_mod.F&lt;BR /&gt;
	ifort&amp;nbsp; /dll my_mod.obj mod_seven.obj /link&lt;/STRONG&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;3. Link it all together with ansys&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\2_dll;..\1_upf;%INCLUDE%&lt;BR /&gt;
	set LIB=..\2_dll;..\1_upf;%LIB%&lt;BR /&gt;
	link @ansys.lrf&lt;/STRONG&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;ansys.lrf includes (among a bunch of ANSYS specific items)&lt;BR /&gt;
	&lt;STRONG&gt;-out:ANSYS.exe&lt;BR /&gt;
	-map:ANSYS.map&lt;BR /&gt;
	-def:ansysex.def&lt;BR /&gt;
	-opt:ref&lt;BR /&gt;
	-machine:X64&lt;BR /&gt;
	-subsystem:windows&lt;BR /&gt;
	-stack:0x2000000&lt;BR /&gt;
	-manifest&lt;BR /&gt;
	-manifestfile:ansys.exe.intermediate.manifest&lt;BR /&gt;
	&lt;BR /&gt;
	-defaultlib:my_mod.lib&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;Thanks&lt;BR /&gt;
	Jim&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 25 Aug 2015 15:23:24 GMT</pubDate>
    <dc:creator>Jim_B_3</dc:creator>
    <dc:date>2015-08-25T15:23:24Z</dc:date>
    <item>
      <title>Pass Module Variables From Main Program to a DLL</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Pass-Module-Variables-From-Main-Program-to-a-DLL/m-p/1060482#M117392</link>
      <description>&lt;P&gt;I am trying to pass some module variables from a main Fortran program to a dll.&amp;nbsp;&amp;nbsp;It gets compilicated in that these files get linked with ANSYS but I&amp;nbsp;think I'm missing something&amp;nbsp;fundamental with&amp;nbsp;my Fortran programs or dll creation.&amp;nbsp; I've created a simple example to demonstrate this.&lt;/P&gt;

&lt;P&gt;I have been able to compile, link, and run but I'm not getting the module variables with the right values in my dll.&amp;nbsp; Since this does link with ANSYS I am not using A visual studio project.&amp;nbsp; I use some simple scripts to compile and link.&lt;/P&gt;

&lt;P&gt;Here is the dll.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; module my_mod&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;contains&lt;/STRONG&gt;&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLEXPORT :: my_print&lt;BR /&gt;
	! can't compile with this and use mod_seven statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLIMPORT :: seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; write(*,*) ' ===== MyPrint called from USolBeg'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp; write(*,*) ' ===== modified after creating custom ANSYS executable'&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) ' SEVEN in my_mod.dll = ', seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end module my_mod&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Here is the module I compile with my main program (and I have to include the mod_seven.obj in the dll creation)&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; module mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; !DEC$ ATTRIBUTES DLLEXPORT :: seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; integer&amp;nbsp;&amp;nbsp; seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contains&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; seven = 7&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) "In Module mod_seven, setting SEVEN to ",SEVEN&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end subroutine set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;end module mod_seven&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;This is a subroutine in the "main" program that is called by ANSYS.&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;*deck,USolBeg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USERDISTRIB&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lcase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jas&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subroutine USolBeg&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;USE my_mod&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USE mod_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;#include "impcom.inc"&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;#include "syspar.inc"&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;call set_seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write(*,*) ' SEVEN in USolbeg.f = ', seven&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call my_print&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;STRONG&gt;return&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;My latest attempt gives me this for output&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp;In Module mod_seven, setting SEVEN to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;BR /&gt;
	&amp;nbsp; SEVEN in USolbeg.f =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR /&gt;
	&amp;nbsp; ===== MyPrint called from USolBeg&lt;BR /&gt;
	&amp;nbsp; ===== modified after creating custom ANSYS executable&lt;BR /&gt;
	&amp;nbsp; SEVEN in my_mod.dll =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;I believe module mod_seven is accessing 2&amp;nbsp;different memory locations.&amp;nbsp; One for the main program and 1 for the dll.&lt;/P&gt;

&lt;P&gt;I'd like the main program and the dll to use the same location.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;Here is how I am compileing and linking:&lt;/P&gt;

&lt;P&gt;1. compile mod_seven.f and usolbeg.f (these are in directory 1_upf)&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\2_dll;%INCLUDE%&lt;BR /&gt;
	set LIB=..\2_dll;%LIB%&lt;BR /&gt;
	ifort -D__EFL -DNOSTDCALL -DARGTRAIL /O2 -DPCWIN64_SYS -DPCWINX64_SYS -DPCWINNT_SYS -DCADOE_ANSYS /fpp /4Yportlib /auto /c /Fo.\ /DFORTRAN /MD /watch:source %%P &amp;gt;&amp;gt;compile.log&amp;nbsp; 2&amp;gt;&amp;amp;1&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;2.&amp;nbsp; compile dll file my_mod.f&amp;nbsp; (these are in directory 2_dll)&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\1_upf;%INCLUDE%&lt;BR /&gt;
	set LIB=..\1_upf;%LIB%&lt;BR /&gt;
	ifort /c /align:common my_mod.F&lt;BR /&gt;
	ifort&amp;nbsp; /dll my_mod.obj mod_seven.obj /link&lt;/STRONG&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;3. Link it all together with ansys&lt;BR /&gt;
	&lt;STRONG&gt;set INCLUDE=..\2_dll;..\1_upf;%INCLUDE%&lt;BR /&gt;
	set LIB=..\2_dll;..\1_upf;%LIB%&lt;BR /&gt;
	link @ansys.lrf&lt;/STRONG&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;/P&gt;

&lt;P&gt;ansys.lrf includes (among a bunch of ANSYS specific items)&lt;BR /&gt;
	&lt;STRONG&gt;-out:ANSYS.exe&lt;BR /&gt;
	-map:ANSYS.map&lt;BR /&gt;
	-def:ansysex.def&lt;BR /&gt;
	-opt:ref&lt;BR /&gt;
	-machine:X64&lt;BR /&gt;
	-subsystem:windows&lt;BR /&gt;
	-stack:0x2000000&lt;BR /&gt;
	-manifest&lt;BR /&gt;
	-manifestfile:ansys.exe.intermediate.manifest&lt;BR /&gt;
	&lt;BR /&gt;
	-defaultlib:my_mod.lib&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;Thanks&lt;BR /&gt;
	Jim&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 25 Aug 2015 15:23:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Pass-Module-Variables-From-Main-Program-to-a-DLL/m-p/1060482#M117392</guid>
      <dc:creator>Jim_B_3</dc:creator>
      <dc:date>2015-08-25T15:23:24Z</dc:date>
    </item>
    <item>
      <title>I start to get a bit confused</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Pass-Module-Variables-From-Main-Program-to-a-DLL/m-p/1060483#M117393</link>
      <description>&lt;P&gt;I start to get a bit confused when you mix in ANSYS, but fundamentally this should work. You correctly DLLEXPORT the variable in the module - as you found you can't export it again. The executable needs to USE that module and link to the export .lib created when the DLL was linked&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 25 Aug 2015 19:20:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Pass-Module-Variables-From-Main-Program-to-a-DLL/m-p/1060483#M117393</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2015-08-25T19:20:41Z</dc:date>
    </item>
  </channel>
</rss>

