RE: Problem with ACLIC linking friend functions under WinXP + root 4.04.02

From: Philippe Canal <pcanal_at_fnal.gov>
Date: Wed, 29 Jun 2005 09:27:25 -0500


Hi Eric,

I took you script as is and compiled it on Windows with Microsoft 7.1 and ROOT 5.01/00 (where TQuarternion has been uploaded).

It worked nicely for me.

Since I do not have you libMath.dll, I can't make any other test?

What am I missing? Can you reproduce the problem with 5.01/00? Can you provide me with a more complete example?

Cheers,
Philippe.

-----Original Message-----
From: owner-roottalk_at_pcroot.cern.ch [mailto:owner-roottalk_at_pcroot.cern.ch] On Behalf Of ANCIANT E.
Sent: Tuesday, June 28, 2005 7:11 AM
To: roottalk_at_pcroot.cern.ch
Subject: [ROOT] Problem with ACLIC linking friend functions under WinXP + root 4.04.02

Hello ROOTERs,

I am trying to use ACLIC on a macro that uses a class (TQuaternion) that I previously loaded
(in a library called libMath, see attached session)
Methods of the class are correctly linked
(for exemple ACLIC does not complain about
Tquaternion::operator+(double))

But for friend function (like Tquaternion operator+(double, Tquaternion&) ) ACLIC linker
Complains about not finding the corresponding function.

When compiling the macro under Visual I have not problem When interpreting the macro I have no problem (see attached session) Finally if I comment the line " q2 = a + q; " ACLIC also works

Does somebody has a hint of what I might be doing wrong ?

Eric


Compiled for win32.

CINT/ROOT C/C++ Interpreter version 5.15.169, Mar 14 2005 Type ? for help. Commands must be C++ statements. Enclose multiple statements between { }. set source file copy flag ' 1'
root [0] gSystem->Load("p:/projets/ATOS/bin/release/libMath.dll")
(int)0

root [1] .x SimpleTestQuaternion.C+
Info in <TWinNTSystem::ACLiC>: creating shared library p:\aps_local\scriptetuder
oot\SimpleTestQuaternion_C.dll
228462_cint.cxx
Warning: operator<<(), parameter only differs in reference type or not FILE:p:\r
oot\root_4.04.02.win32gdk\/include\riostream.h LINE:32 s108_.cxx

   Creating library
p:\aps_local\scriptetuderoot\SimpleTestQuaternion_C.lib and object p:\aps_local\scriptetuderoot\SimpleTestQuaternion_C.exp s108_.obj : error LNK2001: unresolved external symbol "class TQuaternion __cdecl
 operator+(double,class TQuaternion const &)"
(??H_at_YA?AVTQuaternion@@NABV0@@Z)

p:\aps_local\scriptetuderoot\SimpleTestQuaternion_C.dll : fatal error LNK1120: 1
 unresolved externals
Error in <ACLiC>: Compilation failed!
Error: Function SimpleTestQuaternion() is not defined in current scope FILE: LI
NE:0
Possible candidates are...
filename line:size busy function type and name *** Interpreter error recovered ***
root [2] .x SimpleTestQuaternion.C
TQuaternion a quaternion class
(r,x,y,z)=(0.500000,0.000000,0.000000,0.000000)
 (alpha,rho,theta,phi)=(0.000000,0.000000,0.000000,0.000000) root [3]



Ce message et eventuellement les pieces jointes sont exclusivement transmis a l'usage de leur destinataire. Leur contenu est confidentiel. Si vous n etes pas le bon destinataire nous vous demandons de ne pas conserver, copier, utiliser ou divulguer cette communication. Merci de le detruire et de me notifier cette erreur.

INTERNET ne permettant pas d assurer l integrite de ce message, SODERN decline toute responsabilite au cas ou il aurait ete intercepte ou modifie.

This message and possibly any attachments are transmitted for the exclusive use of their addressee. Their content is confidential. If you are not the intended recipient please do not keep, copy, use or disclose this communication to others. Also Please delete it and notify the sender at once.

Because of the nature of INTERNET the sender is not in a position to ensure the integrity of this message, therefore SODERN disclaims any liability whatsoever in the event of this message having been intercepted and/or altered. Received on Wed Jun 29 2005 - 16:28:20 MEST

This archive was generated by hypermail 2.2.0 : Tue Jan 02 2007 - 14:45:09 MET