<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:14pt"><div>Hi Stefan:<br>I did the upgrades, and everything now works like a charm.&nbsp; Thanks for all the help - it has been very generous of you to guide me on problems with compilers, third party source code etc.<br>Krish<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 14pt;"><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Stefan Vigerske &lt;stefan@math.hu-berlin.de&gt;<br><b><span style="font-weight: bold;">To:</span></b> Krish Krishnan &lt;rkrishnan8216@yahoo.com&gt;<br><b><span style="font-weight: bold;">Cc:</span></b> ipopt mailing list &lt;ipopt@list.coin-or.org&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Monday, August 3,
 2009 6:04:36 PM<br><b><span style="font-weight: bold;">Subject:</span></b> Re: [Ipopt] Problems in compiling for Windows<br></font><br>
Hi,<br><br>thanks, now things are much clearer.<br>The drand48 symbols is used in metis, not in ipopt.<br>There also has been a fix to the metis build system that works exactly<br>on your issue.<br>Can you update to Ipopt 3.7.0, or use at least release 1.0.2 of<br>ThirdParty/Metis?<br>Or you just run configure again with the option ADD_CFLAGS="-D__VC__".<br>That should do the same.<br><br>The config_ipopt.h file is written by configure.<br><br>Stefan<br><br>Krish Krishnan wrote:<br>&gt; Hi Stefan:<br>&gt; <br>&gt; Here is the output when I try to make the test examples:<br>&gt; <br>&gt; <br>&gt; test; make test<br>&gt; make[2]: Entering directory <br>&gt; <br>&gt; `/cygdrive/d/Ipopt-3.6.1_MUMPS/Ipopt-3.6.1/Ipopt/test'<br>&gt; /bin/sh ../../libtool --tag=CXX <br>&gt; <br>&gt; --mode=link cl&nbsp; -MT -O2 -nologo -EHsc -GR -wd4996 -D_CRT_SECURE_NO_DEPRECATE -DNDEBUG&nbsp; &nbsp; &nbsp; <br>&gt; <br>&gt; -o hs071_cpp.exe&nbsp; hs071_main.obj hs071_nlp.obj
 ../src/Interfaces/libipopt.la -link&nbsp; <br>&gt; <br>&gt; /NODEFAULTLIB:libc.lib <br>&gt; cl -MT -O2 -nologo -EHsc -GR -wd4996 -D_CRT_SECURE_NO_DEPRECATE <br>&gt; <br>&gt; -DNDEBUG -o hs071_cpp.exe hs071_main.obj hs071_nlp.obj&nbsp; <br>&gt; <br>&gt; d:/Ipopt-3.6.1_MUMPS/Ipopt-3.6.1/Ipopt/src/Interfaces/.libs/libipopt.lib -link <br>&gt; <br>&gt; /NODEFAULTLIB:libc.lib<br>&gt; cl : Command line warning D9035 : option 'o' has been deprecated and <br>&gt; <br>&gt; will be removed in a future release<br>&gt; libipopt.lib(initpart.obj) : error LNK2019: unresolved external symbol _drand48 referenced <br>&gt; <br>&gt; in function ___GrowBisection<br>&gt; libipopt.lib(graph.obj) : error LNK2001: unresolved external symbol _drand48<br>&gt; libipopt.lib(minitpart.obj) : error LNK2001: unresolved external symbol _drand48<br>&gt; libipopt.lib(minitpart2.obj) : error LNK2001: unresolved external symbol _drand48<br>&gt; libipopt.lib(util.obj) : error LNK2019:
 unresolved external symbol _srand48 referenced in <br>&gt; <br>&gt; function ___InitRandom<br>&gt; hs071_cpp.exe : fatal error LNK1120: 2 unresolved externals<br>&gt; make[2]: *** [hs071_cpp.exe] Error 2<br>&gt; make[2]: Leaving directory <br>&gt; <br>&gt; `/cygdrive/d/Ipopt-3.6.1_MUMPS/Ipopt-3.6.1/Ipopt/test'<br>&gt; make[1]: *** [unitTest] Error 2<br>&gt; make[1]: Leaving directory `/cygdrive/d/Ipopt-3.6.1_MUMPS/Ipopt-3.6.1/Ipopt'<br>&gt; make: *** <br>&gt; <br>&gt; [tests] Error 2<br>&gt; <br>&gt; <br>&gt; <br>&gt; Also here are the relevant parts of&nbsp; config_ipopt.h<br>&gt; <br>&gt; <br>&gt; /* Define to 1 if function drand48 is available */<br>&gt; /* #undef HAVE_DRAND48 */<br>&gt; <br>&gt; DRAND48 is not to be found anywhere else in this file.<br>&gt; Is this file rewritten with every configure command or with every make command?<br>&gt; <br>&gt; Thanks <br>&gt; Krish<br>&gt; <br>&gt; <br>&gt; <br>&gt; <br>&gt;
 ________________________________<br>&gt; From: Stefan Vigerske &lt;<a ymailto="mailto:stefan@math.hu-berlin.de" href="mailto:stefan@math.hu-berlin.de">stefan@math.hu-berlin.de</a>&gt;<br>&gt; To: Krish Krishnan &lt;<a ymailto="mailto:rkrishnan8216@yahoo.com" href="mailto:rkrishnan8216@yahoo.com">rkrishnan8216@yahoo.com</a>&gt;<br>&gt; Cc: ipopt mailing list &lt;<a ymailto="mailto:ipopt@list.coin-or.org" href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</a>&gt;<br>&gt; Sent: Monday, August 3, 2009 2:10:45 PM<br>&gt; Subject: Re: [Ipopt] Problems in compiling for Windows<br>&gt; <br>&gt; Hi,<br>&gt; <br>&gt;&gt; I finally was able to compile Ipopt with the Intel Fortran Compiler (version 11).&nbsp; I then went to config_ipopt.h looking for&nbsp; #define HAVE_DRAND48, but this is not present in the file.&nbsp; I anyway uncommented #undef HAVE_DRAND48 and tried a make tests.&nbsp; But this failed because of unresolved externals drand48 and
 srand48.&nbsp; I next tried #defien HAVE_DRAND48 0, but this too was of no use.&nbsp; This was not a problem when I first compiled Ipopt with Intel version 10 and MSVC 2005.&nbsp; So I wonder what else I can do to compile the examples and link them with libIpopt.lib. Thanks.<br>&gt; <br>&gt; Can you say where the unresolved externals appear, i.e., which file or<br>&gt; function wants to use it?<br>&gt; If there is no #define HAVE_DRAND48 in config_ipopt.h, then Ipopt should<br>&gt; not use it. See Ipopt/src/Common/IpUtils.cpp, from line 140 on.<br>&gt; <br>&gt; Stefan<br>&gt; <br>&gt;&gt; Krish<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; ________________________________<br>&gt;&gt; From: Stefan Vigerske &lt;<a ymailto="mailto:stefan@math.hu-berlin.de" href="mailto:stefan@math.hu-berlin.de">stefan@math.hu-berlin.de</a>&gt;<br>&gt;&gt; To: Krish Krishnan &lt;<a ymailto="mailto:rkrishnan8216@yahoo.com"
 href="mailto:rkrishnan8216@yahoo.com">rkrishnan8216@yahoo.com</a>&gt;<br>&gt;&gt; Cc: ipopt mailing list &lt;<a ymailto="mailto:ipopt@list.coin-or.org" href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</a>&gt;<br>&gt;&gt; Sent: Thursday, July 30, 2009 6:19:10 PM<br>&gt;&gt; Subject: Re: [Ipopt] Problems in compileing for Windows<br>&gt;&gt;<br>&gt;&gt; Hi,<br>&gt;&gt;<br>&gt;&gt;&gt; Thanks.&nbsp; I moved the code to another machine that had the Intel Fortran Compiler without MKL.&nbsp; This time around, the BLAS and LAPACK code was compiled and I had no problem creating libipopt.lib.&nbsp; So the issue definitely has something to do with the MKL part of the fortran compiler. <br>&gt;&gt; If you do not want Ipopt to use MKL, but build your own blas and lapack,<br>&gt;&gt; try configuring with the options --with-blas=BUILD and --with-lapack=BUILD.<br>&gt;&gt;<br>&gt;&gt;&gt; When I try to link to the newly created library, however, I get the
 linker error unresolved external symbol _drand48 and _srand48.&nbsp; Do you have any idea if there are any other libraries I should pull in.&nbsp; (Perhaps these are not part of the Microsoft Visual C++ setup)<br>&gt;&gt; Now it depends on which compiler you used on which machine.<br>&gt;&gt; drand48 and srand48 are for random number generation and configure<br>&gt;&gt; checks which one are available and then uses them.<br>&gt;&gt; So probably you did not use the same C++ compiler on your two machines?<br>&gt;&gt; You can play around with the #ifdef's in Ipopt/inc/config_ipopt.h to<br>&gt;&gt; have Ipopt use a different random number generator function. That is, on<br>&gt;&gt; your 2nd machine, you comment out the line #define HAVE_DRAND48, rebuild<br>&gt;&gt; and hope that it will work with one of the other two routines.<br>&gt;&gt; These are enabled by #define HAVE_STD__RAND and #define HAVE_RAND. Maybe<br>&gt;&gt; they are available in the MS VC++ on
 the first machine.<br>&gt;&gt;<br>&gt;&gt; Stefan<br>&gt;&gt;<br>&gt;&gt;&gt; Thanks<br>&gt;&gt;&gt; Krish<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; ________________________________<br>&gt;&gt;&gt; From: Stefan Vigerske &lt;<a ymailto="mailto:stefan@math.hu-berlin.de" href="mailto:stefan@math.hu-berlin.de">stefan@math.hu-berlin.de</a>&gt;<br>&gt;&gt;&gt; To: Krish Krishnan &lt;<a ymailto="mailto:rkrishnan8216@yahoo.com" href="mailto:rkrishnan8216@yahoo.com">rkrishnan8216@yahoo.com</a>&gt;<br>&gt;&gt;&gt; Cc: ipopt mailing list &lt;<a ymailto="mailto:ipopt@list.coin-or.org" href="mailto:ipopt@list.coin-or.org">ipopt@list.coin-or.org</a>&gt;<br>&gt;&gt;&gt; Sent: Wednesday, July 29, 2009 4:00:39 PM<br>&gt;&gt;&gt; Subject: Re: [Ipopt] Problems in compileing for Windows<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Hi,<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; I am trying to upgrade my version of IpOpt to the current level.&nbsp; I have
 the Intel Fortran compiler (Version 11) and the Microsoft Visual Studio (2005).&nbsp; My environment is Cygwin, and I configure with --enable-doscompile=msvc.&nbsp; I have used the get statements in the respective ThirdParty directories to get Lapack, Blas, Metis and I also have the latest version of Mumps.<br>&gt;&gt;&gt;&gt; 1. When I run configure, I get a warning that the FFLAGS="" does not work, and that it will compile with an empty FFLAGS.<br>&gt;&gt;&gt; I cannot see this in your configure output. I see a<br>&gt;&gt;&gt;&nbsp;  configure: Fortran compiler options are: -MT -O3 -fpp -nologo<br>&gt;&gt;&gt; which looks good to me.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; 2. The configure command detects Blas and Lapack in the MKL, and so will not build these libraries.&nbsp; I guess it will use the default version of these that come with MKL.&nbsp; Is this the correct approach, or is there some way I can force it to build the Blas and Lapack
 libraries?<br>&gt;&gt;&gt; I think so. Your configure output shows<br>&gt;&gt;&gt; checking for BLAS in MKL... yes<br>&gt;&gt;&gt; checking whether LAPACK is already available with BLAS library... yes<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;&gt; 3.&nbsp; When I try to compile by running make, I get a warning that I am trying to link with static library archive mkl_core.lib and that I should maybe use the shared version.&nbsp; What should I do at this stage?<br>&gt;&gt;&gt;&gt; 4. When at the final stage it tries to build the library, the process seems to pull in a huge number of .obj files (much more than I remember from the previous build).&nbsp; It hangs at this point and I cannot proceed further and have to kill the process.<br>&gt;&gt;&gt; Looks like it is extracting the MKL library, which is then resulting in<br>&gt;&gt;&gt; these many object files.<br>&gt;&gt;&gt; And the MKL lib is extracted because it has been added to libcoinmumps -<br>&gt;&gt;&gt; at
 the point where you report this warning in step 3:<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; /bin/sh ./../../libtool --tag=F77 --mode=link ifort&nbsp; -MT -O3 -fpp<br>&gt;&gt;&gt; -nologo&nbsp;  -Dmetis&nbsp;  -o <a target="_blank" href="http://libcoinmumps.la">libcoinmumps.la</a>&nbsp;  dmumps_comm_buffer.lo<br>&gt;&gt;&gt; dmumps_struc_def.lo mumps_ooc_common.lo mumps_static_mapping.lo<br>&gt;&gt;&gt; dmumps_ooc_buffer.lo dmumps_load.lo dmumps_ooc.lo dmumps_part1.lo<br>&gt;&gt;&gt; dmumps_part2.lo dmumps_part3.lo dmumps_part4.lo dmumps_part5.lo<br>&gt;&gt;&gt; dmumps_part6.lo dmumps_part7.lo dmumps_part8.lo mumps_part9.lo<br>&gt;&gt;&gt; mumps_c.lo mumps_common.lo mumps_orderings.lo mumps_io.lo<br>&gt;&gt;&gt; mumps_io_basic.lo mumps_io_thread.lo mumps_io_err.lo mpi.lo mpic.lo<br>&gt;&gt;&gt; elapse.lo&nbsp; mkl_intel_c.lib mkl_sequential.lib mkl_core.lib<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; *** Warning: Trying to link with static lib archive
 mkl_intel_c.lib.<br>&gt;&gt;&gt; *** I have the capability to make that library automatically link in when<br>&gt;&gt;&gt; *** you link to this library.&nbsp; But I can only do this if you have a<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; I am not so sure how to proceed, since I never tried linking to MKL before.<br>&gt;&gt;&gt; Maybe you can go into IpOpt_3.6.1_MUMPS/ThirdParty/Mumps and edit the<br>&gt;&gt;&gt; Makefile there, trying to prevent adding the files mkl_intel_c.lib<br>&gt;&gt;&gt; mkl_sequential.lib mkl_core.lib to the linkline.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; In my linux version of the Makefile, there are the two lines<br>&gt;&gt;&gt; libcoinmumps.la: $(libcoinmumps_la_OBJECTS) $(libcoinmumps_la_DEPENDENCIES)<br>&gt;&gt;&gt;&nbsp; &nbsp; &nbsp; &nbsp;  $(F77LINK) $(am_libcoinmumps_la_rpath)<br>&gt;&gt;&gt; $(libcoinmumps_la_LDFLAGS) $(libcoinmumps_la_OBJECTS)<br>&gt;&gt;&gt; $(libcoinmumps_la_LIBADD)
 $(LIBS)<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Maybe removing $(LIBS) or/and $(libcoinmumps_la_LIBADD) will help?<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Stefan<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; ------------------------------------------------------------------------<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt; Ipopt mailing list<br>&gt;&gt;&gt; <a ymailto="mailto:Ipopt@list.coin-or.org" href="mailto:Ipopt@list.coin-or.org">Ipopt@list.coin-or.org</a><br><span>&gt;&gt;&gt; <a target="_blank" href="http://list.coin-or.org/mailman/listinfo/ipopt">http://list.coin-or.org/mailman/listinfo/ipopt</a></span><br>&gt;&gt;<br>&gt; <br>&gt; <br><br><br>-- <br>Stefan Vigerske<br>Humboldt University Berlin, Numerical Mathematics<br><span><a target="_blank" href="http://www.math.hu-berlin.de/%7Estefan">http://www.math.hu-berlin.de/~stefan</a></span><br></div></div></div><br>

      </body></html>