ROOT 5.11.02 and VC6

Dear ROOTers,

Thanks a lot for nice features in version 5.11.02 !

Unfortunately, I have got problems with recompilation of my application using Microsoft VC6 environment. The problem is easily reproduced with small script like in file “check_version_511.C”:

#include
#include “TVectorD.h”
#include “TVectorF.h”

void check_version_511 ()
{
TVectorF *tmp_axis;
Int_t i;

tmp_axis = new TVectorF(3);
for (i=0;i<3>Draw();

}

and “.x check_version_511.C++”

I have a diagnostic:

C:\ROOT/include\TMatrixT.h(67) : error C2535: ‘__thiscall TMatrixT::TMatrixT(const class TMatrixT &)’ : member function already defined or declared

Is there a way to overcome this with VC6 ?

     Elena Litvinenko

Elena,

see Release Notes of Version 5.10.
Look changes to declarations/includes for TVector, TMatrix,\You must use TVectorDfwd.h, etc

Rene

Dear Rene,

 Thanks a lot for pointing me to this. But after updating I still have not got the result (diagnostics: "uses undefined class 'TVectorT<float>"). 

On the page

root.cern.ch/root/Version50800.news.html

 the text "Linear Algebra package: IMPORTANT WARNINGS" promises that 

" In the next release, these include will contain the correct declaration of TMatrixD, TVectorF using the corresponding typedefs. " (Txxxfwd.h)

I have an impression that it has not been fully done yet. Am I right, or just doing something wrongly? If the second case - could you please properly update the macro above? I am trying to transfer from 5.06 to 5.11.

Elena

Elena,

Could you send the exact code that you try to execute. In your example above, you have a C++ error in your do loop
for (i=0…

Rene

Sure, sorry for not checking the result in Preview (it was cut by posting service).
The variant without cut is here.

File “check_version_511.C” :

#include “TVectorDfwd.h”

void check_version_511 ()
{
Int_t i;

TVectorD tmp_axis_1(3); 

for (i=0;i<3;i++)
	tmp_axis_1[i] = i;

tmp_axis_1.Draw();

}

Elena

If you use the released version 5.11/02, use

#include "TVectorD.h"
Rene

Dear Rene,

I tried this already, it did not help. With this I have always the diagnistic

C:\ROOT/include\TMatrixT.h(67) : error C2535: ‘__thiscall TMatrixT::TMatrixT(const class TMatrixT &)’ : member function already defined or declared

(Details in attachment).

 I use version     root_v5.11.02.win32gdk.tar.gz

 Elena

attempts.C (6.53 KB)

Hi,

VC6 and VC7.0 are not fully supported. “Fully” meaning we know they don’t work with some parts due to compiler bugs and limitations, especially with templates, but we do whatever is reasonable to allow code to work with VC6. You probably hit one of the VC6 bugs that we cannot work around. Make sure you’ve installed the latest service pack for your compiler. If it still doesn’t work, please try with MSVC>=7.1.

Axel.

Dear Axel,

Thanks for your explanation, it is exactly that I was afraid of.

Best wishes,
                    Elena