Hi, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It runs fine with the &quot;-localonly&quot; and &quot;-localroot&quot; option. <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Really don&#39;t understand why it cannot call dll using &quot;-n 1&quot; option. (This program should be run in multiple computers).<br>
Regards,<br>Vivian<br><br><div class="gmail_quote">On Fri, Dec 5, 2008 at 6:01 PM, Jayesh Krishna <span dir="ltr">&lt;<a href="mailto:jayesh@mcs.anl.gov">jayesh@mcs.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">




<div>
<div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Hi,</span></font></div>
<div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>&nbsp;Can you also try whether the program runs fine 
with the &quot;-localroot&quot; option ?</span></font></div>
<div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span></span></font>&nbsp;</div>
<div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Regards,</span></font></div>
<div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Jayesh</span></font></div><br>
<div dir="ltr" align="left" lang="en-us">
<hr>
<font size="2" face="Tahoma"><b>From:</b> Vivian [mailto:<a href="mailto:viviantj@gmail.com" target="_blank">viviantj@gmail.com</a>] 
<br><b>Sent:</b> Friday, December 05, 2008 11:30 AM<br><b>To:</b> Jayesh 
Krishna<br><b>Cc:</b> <a href="mailto:mpich-discuss@mcs.anl.gov" target="_blank">mpich-discuss@mcs.anl.gov</a><br><b>Subject:</b> Re: 
[mpich-discuss] problem of calling .dll in mpich<br></font><br></div><div><div></div><div class="Wj3C7c">
<div></div>Hi,&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I attached the 
sample test program which fails to call dll when it is run by &quot;mpiexec -n 1 
application name&quot;. <br>&nbsp;&nbsp;&nbsp;&nbsp; (Btw, when using &quot;mpiexec 
-localonly application name&quot;, dll can be 
called.)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>The DLL called in the 
program is 




a Dynamic Link Library (DLL) provided by ArcView ( a GIS software) for use with 
WinHelp that lets you run a script. The DLL contains two functions that you can 
use as WinHelp macros. 
<p>AVRun -- this macro sends an Avenue statement from Help to 
ArcView. For example, you might send a statement to make a particular view the 
active document or run a script contained in the current project.</p>
<p>




</p>
<p>AVScript -- this macro runs a given script regardless of what 
ArcView project is open. The script, in this case, is stored as part of the Help 
file and not in an ArcView project.</p>
<p><br></p>Here&#39;s how you could run a script in the current 
ArcView project file and pass an argument to it. In this case, the number 5 is 
passed as an argument to a script, named script1, in the 
project:<br>AVRun(`av.Run(&quot;script1&quot;, 5)&#39;)
<p></p>
<p><br></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Here is the sample test 
code<br></p>------------------------------------------------------------------------------------------------------------------------------------------------------------------<br>#include&lt;iostream&gt;<br>#include 
&lt;windows.h&gt; <br><br>/*Some users may get error messages such 
as<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SEEK_SET is #defined but must not be 
for the C++ binding of MPI<br>&nbsp;&nbsp; The problem is that both stdio.h and 
the MPI C++ interface use SEEK_SET, SEEK_CUR, and SEEK_END. <br>&nbsp;&nbsp; 
This is really a bug in the MPI-2 standard. You can try adding the following 
three lines before mpi.h is included<br>*/<br>#undef SEEK_SET<br>#undef 
SEEK_END<br>#undef SEEK_CUR<br>#include &quot;mpi.h&quot;<br><br>typedef char (__stdcall 
*AVRUN) (char[100]); <br>HINSTANCE ArcviewDLL;<br>AVRUN AVRun;<br><br>int 
main(int argc,char **argv)<br>{<br><br>&nbsp;&nbsp;&nbsp; //load avhelp.dll 
<br>&nbsp;&nbsp;&nbsp; ArcviewDLL= LoadLibraryA(&quot;Avhelp.dll&quot;);&nbsp;&nbsp;&nbsp; 
//It needs a Unicode string. Therefore, we use LoadLibraryA() instead of 
LoadLibrary()&nbsp; <br>&nbsp;&nbsp;&nbsp; if 
(ArcviewDLL==NULL)<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;cannot load the 
Avhelp.dll.\n&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(&quot;Make sure 
that the Avhelp.dll is in your \\windows\\system 
&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&quot;directory or in the program&#39;s directory.\n&quot;);<br>&nbsp;&nbsp;&nbsp; 
}<br><br>&nbsp;&nbsp;&nbsp; //get the adress of the AVRun function 
<br>&nbsp;&nbsp;&nbsp; AVRun = (AVRUN) GetProcAddress(ArcviewDLL, 
&quot;AVRun&quot;);<br><br>&nbsp;&nbsp;&nbsp; //================================== Start 
MPI =======================================//<br>&nbsp;&nbsp;&nbsp; //MPI : 
Declar Variables<br>&nbsp;&nbsp;&nbsp; int my_rank;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Rank of process 
<br>&nbsp;&nbsp;&nbsp; int num_proc;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Number of 
processers<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; //MPI : 
Initialize<br>&nbsp;&nbsp;&nbsp; MPI_Init(&amp;argc, 
&amp;argv);<br>&nbsp;&nbsp;&nbsp; MPI_Comm_rank(MPI_COMM_WORLD, 
&amp;my_rank);<br>&nbsp;&nbsp;&nbsp; MPI_Comm_size(MPI_COMM_WORLD, 
&amp;num_proc);<br><br><br>&nbsp;&nbsp;&nbsp; // -------- master Program 
----------------//<br>&nbsp;&nbsp;&nbsp; if (my_rank==0)&nbsp;&nbsp;&nbsp;&nbsp; 
// Master processor<br>&nbsp;&nbsp;&nbsp; 
{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //-------------Start call dll 
--------------//&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; ArcviewDLL= LoadLibraryA(&quot;Avhelp.dll&quot;);&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; AVRun = (AVRUN) 
GetProcAddress(ArcviewDLL, 
&quot;AVRun&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; std::cout&lt;&lt;&quot;Start 
Calling DLL&quot;&lt;&lt;std::endl;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
AVRun(&quot;av.run(\&quot;HAO_script3\&quot;,\&quot;\&quot;)&quot;);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
std::cout&lt;&lt;&quot;End Calling DLL&quot;&lt;&lt;std::endl;<br><br>&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp; //MasterWork_MPI();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
//-------------End call dll---------------//<br>&nbsp;&nbsp;&nbsp; 
}<br><br>&nbsp;&nbsp;&nbsp; // --------slave Program 
------------------//<br>&nbsp;&nbsp;&nbsp; else<br>&nbsp;&nbsp;&nbsp; 
{&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
//SlaveWork_MPI();<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; 
MPI_Finalize(); <br><br>&nbsp;&nbsp;&nbsp; //================================ 
End MPI ====================================//<br>&nbsp;&nbsp;&nbsp; return 
0;<br>}<br><br>&nbsp;&nbsp;&nbsp; <br>




<span style="font-size: 10.5pt; font-family: &#39;Times New Roman&#39;;"></span>Vivian<br>12/05/2008<br><br><br><br>
<div class="gmail_quote">On Fri, Dec 5, 2008 at 10:03 AM, Jayesh Krishna <span dir="ltr">&lt;<a href="mailto:jayesh@mcs.anl.gov" target="_blank">jayesh@mcs.anl.gov</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
  <div>
  <div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Hi,</span></font></div>
  <div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>&nbsp;Can 
  you send us a sample test program that fails ?</span></font></div>
  <div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span></span></font>&nbsp;</div>
  <div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Regards,</span></font></div>
  <div dir="ltr" align="left"><font size="2" color="#0000ff" face="Arial"><span>Jayesh</span></font></div><font size="2" color="#0000ff" face="Arial"></font><br>
  <div dir="ltr" align="left" lang="en-us">
  <hr>
  <font size="2" face="Tahoma"><b>From:</b> <a href="mailto:mpich-discuss-bounces@mcs.anl.gov" target="_blank">mpich-discuss-bounces@mcs.anl.gov</a> [mailto:<a href="mailto:mpich-discuss-bounces@mcs.anl.gov" target="_blank">mpich-discuss-bounces@mcs.anl.gov</a>] <b>On Behalf Of 
  </b>Vivian<br><b>Sent:</b> Friday, December 05, 2008 12:05 AM<br><b>To:</b> <a href="mailto:mpich-discuss@mcs.anl.gov" target="_blank">mpich-discuss@mcs.anl.gov</a><br><b>Subject:</b> [mpich-discuss] 
  problem of calling .dll in mpich<br></font><br></div>
  <div>
  <div></div>
  <div>
  <div></div>Hi,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I met some problems when I 
  was trying to call a dll in a mpich program (Language:VS 
  2005).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) MPICH seems to only support 
  calling convention&nbsp; _cdecl. <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; When I 
  change the project setting to _stdcall, the code cannot be successfully 
  built.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; So I set the 
  project setting back to _cdecl and force the calling convention of the 
  function pointer to my function on the DLL to be &quot;_stdcall&quot;. This time the 
  program is built. <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  Under debugging mode or directly run in command window ( c:&gt;test.ext), 
  there is no problem to call dll in the code.<br>&nbsp; &nbsp; &nbsp; &nbsp; 
  &nbsp; Here is the code:<br>&nbsp; &nbsp; 
  -------------------------------------------------------------------------------- 
  <br>&nbsp;&nbsp;&nbsp;&nbsp; typedef char (__stdcall *AVRUN) 
  (char[100]);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; HINSTANCE ArcviewDLL;&nbsp; 
  <br>&nbsp;&nbsp;&nbsp;&nbsp; AVRUN AVRun;<br>&nbsp;&nbsp;&nbsp;&nbsp; 
  ArcviewDLL= LoadLibraryA(&quot;Avhelp.dll&quot;);&nbsp;&nbsp;&nbsp; 
  <br>&nbsp;&nbsp;&nbsp;&nbsp; AVRun = (AVRUN) GetProcAddress(ArcviewDLL, 
  &quot;AVRun&quot;);<br><br>&nbsp;&nbsp;&nbsp; 
  AVRun(&quot;av.run(\&quot;HAO_script3\&quot;,\&quot;\&quot;)&quot;);<br>&nbsp;&nbsp;&nbsp; 
  -------------------------------------------------------------------------------<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  (2) However, the program fails to call dll when I use &quot;mpiexec&quot; to run it. 
  (c:&gt;mpiexec -n 1 
  test.exe).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It 
  seems to &quot;stop&quot; right before this line<br>&nbsp; 
  -------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp; 
  AVRun(&quot;av.run(\&quot;HAO_script3\&quot;,\&quot;\&quot;)&quot;);<br>&nbsp; 
  -------------------------------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  Is there anyone having any idea why this happens?<br clear="all"><br>--<br>Vivian<br></div></div></div></blockquote></div><br></div></div></div>
</blockquote></div>