First of all I must say that never before have I received so much help in so little time, this is just unbelievable as a computer engineer :)<div><br></div><div>I finally managed to compile the first example given in Autodif manual following your suggestions. As Dave said, I used the same flags the admb console program uses, and as John remarked, I put them in exactly the same order.</div>

<div><br></div><div>In the end I was using the correct libraries but in a kinda random order, and I was also eliminating duplicates (I wrongly thought they were meaningless). </div><div><br></div><div>As a reference for future users, I'm using MinGW 32 through Windows 7 Eclipse and my code is left as an attachment.</div>

<div><br><div>Thanks again,</div><div>Pedro.</div><div><br><div class="gmail_quote">On Sat, Nov 3, 2012 at 6:17 PM, John Sibert <span dir="ltr"><<a href="mailto:sibert@hawaii.edu" target="_blank">sibert@hawaii.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I generally use make to compile and link AUTODIF applications. Here are examples of compiler and linker flags that are used in a linux environment. There are some application specific settings so, I  have also included simplified versions below the ------------<br>


<br>
# make with "optimized" library without subscript checking<br>
CFLAGS= -m64 -DTRUE=true -DFALSE=false -DVERCONS=1 -D__GNUDOS__ -DOPT_LIB -fpermissive -Wno-deprecated -I${ADMB_HOME}/include -I${JNIGRAPHICS_PATH} -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I/usr/include/libxml2 $(INCPATH)<br>


<br>
LFLAGS= -L${JNIGRAPHICS_PATH} -L$(JAVA_HOME)/jre/lib/amd64/<u></u>server -L${ADMB_HOME}/lib -ljnigraphics3 -ldf1b2o -ladmod -ladt -lado -ldf1b2o -ladmod -ladt -lads -lstdc++ -lm -lado -ladt -ldl -ljvm -lxml2 -L/usr/share/pvm3/lib/LINUX64<br>


<br>
# make with safe library for subscript checking<br>
CFLAGS= -m64 -ggdb -DTRUE=true -DFALSE=false -DVERCONS=1 -D__GNUDOS__ -fpermissive -Wno-deprecated -I${ADMB_HOME}/include -I${JNIGRAPHICS_PATH} -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux -I/usr/include/libxml2 $(INCPATH)<br>


<br>
LFLAGS= -ggdb -L${JNIGRAPHICS_PATH} -L$(JAVA_HOME)/jre/lib/amd64/<u></u>server -L${ADMB_HOME}/lib -ljnigraphics3 -ldf1b2s -ladmod -ladt -lads -ldf1b2s -ladmod -ladt -lads -lstdc++ -lm -lads -ladt -ldl -ljvm -lxml2 -L/usr/share/pvm3/lib/LINUX64<br>


<br>
------------------<br>
<br>
#make with "optimized" library without subscript checking<br>
CFLAGS= -D__GNUDOS__ -DOPT_LIB -fpermissive -Wno-deprecated -I${ADMB_HOME}/include<br>
<br>
LFLAGS= -L${ADMB_HOME}/lib -ldf1b2o -ladmod -ladt -lado -ldf1b2o -ladmod -ladt -lads -lstdc++ -lm -lado -ladt<br>
<br>
# make with safe library for subscript checking and symbolic debugging<br>
CFLAGS= -ggdb -D__GNUDOS__ -fpermissive -Wno-deprecated -I${ADMB_HOME}/include<br>
<br>
LFLAGS= -ggdb -L${ADMB_HOME}/lib -ldf1b2s -ladmod -ladt -lads -ldf1b2s -ladmod -ladt -lads -lstdc++ -lm -lads<br>
<br>
-------------------------<br>
<br>
So (at least for this 3 year-old) example, the libraries you need are libadmod.a libadt.a libado.a (or libads.a) for the safe libraries. Note the order is important and they need to be linked twice (not sure why). Also, it appears that some the ADModel Builder libraries (libdf1b2o.a and libadmod.a) may be required to satisfy some references. Since these librararies are included in the ADMB distributions, there is no real downside to linking them into the application anyhow).<br>


<br>
Please let us know how you make out.<br>
<br>
John Sibert<br>
Emeritus Researcher, SOEST<br>
University of Hawaii at Manoa<br>
<br>
Visit the ADMB project <a href="http://admb-project.org/" target="_blank">http://admb-project.org/</a><div><div class="h5"><br>
<br>
On 11/03/2012 03:46 AM, Pedro Tabacof wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
Hello,<br>
<br>
I've been searching for automatic differentiation tools and I found ADMB's Autodif to be quite what I needed. However, I've been having some problems regarding its use from a regular C++ application.<br>
<br>
All the step-by-step manuals on the website show how to use the command prompt program "admb" (which tested just fine here), but I wanna use Autodif inside a large C++ project, a little bit like its manual shows, by including headers (in this case fvar.hpp) to the source code and using the corresponding classes for automatic differentiation (such as dvector).<br>


<br>
The problem is that the compiler complains (rightly so) that all the classes declared by fvar.hpp are undefined references. There are many libraries that come with ADMB, so how am I supposed to know which ones are required by Autodif classes? Is there any manual or guide that may shine a light on this? Is it even possible to do what I'm attempting to do?<br>


<br>
Thanks a lot,<br>
Pedro Tabacof,<br>
State University of Campinas, Brazil.<br>
<br>
<br>
<br>
-- <br>
Pedro Tabacof,<br>
Unicamp - Eng. de Computação 08.<br>
<br>
<br>
<br></div></div><div class="im">
______________________________<u></u>_________________<br>
Users mailing list<br>
<a href="mailto:Users@admb-project.org" target="_blank">Users@admb-project.org</a><br>
<a href="http://lists.admb-project.org/mailman/listinfo/users" target="_blank">http://lists.admb-project.org/<u></u>mailman/listinfo/users</a><br>
</div></blockquote>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>Pedro Tabacof,<br>Unicamp - Eng. de Computação 08.<br><br>
</div></div>