Compiling with .Net

From: Dimitris Sideris <d.sideris_at_imperial.ac.uk>
Date: Fri, 11 Feb 2005 13:51:18 -0000


Hello,
I have recently migrated to ROOT v4.02 and Visual .NET. I have tried to reproduce Francois-Xavier
Gentit's instructions to build a simple test app, most of it goes well but I get unresolved externals. The same class used to compile before with ROOT 3.x and vc++6.  

Building Root dictionary for A

Compiling...

stdafx.cpp

Compiling...

fillgeometry.cpp

AssemblyInfo.cpp

a.cpp

Generating Code...

Compiling resources...

Linking...

a.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall A::Streamer(class TBuffer &)" (?Streamer_at_A@@UAEXAAVTBuffer@@@Z)

a.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall A::ShowMembers(class TMemberInspector &,char *)" (?ShowMembers_at_A@@UAEXAAVTMemberInspector@@PAD_at_Z)

a.obj : error LNK2001: unresolved external symbol "public: static class TClass * __cdecl A::Class(void)" (?Class_at_A@@$$FSAPAVTClass@@XZ)

a.obj : error LNK2001: unresolved external symbol "class ROOT::TGenericClassInfo * __cdecl ROOT::GenerateInitInstance(class A const *)" (?GenerateInitInstance_at_ROOT@@$$FYAPAVTGenericClassInfo_at_1@PBVA@@@Z)

C:\root-projects\fillgeometry\Debug\fillgeometry.exe : fatal error LNK1120: 4 unresolved externals

Build log was saved at
"file://c:\root-projects\fillgeometry\fillgeometry\Debug\BuildLog.htm"

fillgeometry - 5 error(s), 0 warning(s)  

Build: 0 succeeded, 1 failed, 0 skipped    

Class A is as follows:

a.h********

// myclass.h: interface for the myclass class.

//

//////////////////////////////////////////////////////////////////////

#ifndef __A_HH__

#define __A_HH__      

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

#include "TObject.h"  

class A : public TObject {

public:

A();

virtual ~A();

// Float_t rv[300];

Float_t t_scan();

Float_t t_min();

Float_t v(Int_t);

Float_t v_streight(Int_t); // don't use offset/amplification

Float_t v1(Int_t);

Float_t v1_streight(Int_t); // don't use offset/amplification

Float_t v2(Int_t);

Float_t v2_streight(Int_t); // don't use offset/amplification

void SetAmplifier(Float_t, Float_t);

Float_t GetOffset();

Float_t GetAmpFactor();

void SetAdcOneVolt(Float_t);

Float_t GetAdcOneVolt();

void SetNumberOfPixels(Short_t );

Short_t GetNumberOfPixels();

void SetReadoutSpeed(Float_t ); //Hz

Float_t GetReadoutSpeed();

Float_t GetZeroCounts(); // baseline in adc counts

void SetZeroCounts(Float_t);

// variables

Float_t rv[1025]; // first channel

Float_t rv2[1025]; // second channel

Int_t time;

Float_t amplificationFactor; // amplifier

Float_t vOffset; // pedestal

Float_t adcOneVolt; // 1 V in ADC counts

Short_t pdaNumberOfPixels;

Float_t daqReadoutSpeed;

Float_t adcZeroCounts; // baseline value in ADC counts e.g. ~ -400  

private:

//

ClassDef(A,1) //My small class example

};  

#endif  

**********a.cpp***********************

#include "A.h"  

ClassImp(A)

A::A() {

for(int i=0;i<=1024;i++) { rv[i]=0;};

time = 0;

vOffset=0; // no offset

amplificationFactor=-1.; // inversion but no amplification

adcOneVolt=6200; //ICS 652 14bit approx

adcZeroCounts=-400; // approx - baseline in adc counts

daqReadoutSpeed=10; //Hz

pdaNumberOfPixels=512;

}

A::~A() {

//

}  

Float_t A::t_scan() { return (Float_t(time)); }

Float_t A::t_min() { return Float_t(time)/60./daqReadoutSpeed; }

Float_t A::v(Int_t pixel) { return
((rv[pixel]-adcZeroCounts)/adcOneVolt-vOffset)/amplificationFactor; }

Float_t A::v_streight(Int_t pixel) { return rv[pixel]; }

Float_t A::v1(Int_t pixel) { return v(pixel); }

Float_t A::v1_streight(Int_t pixel) { return rv[pixel]; }

Float_t A::v2(Int_t pixel) { return
((rv2[pixel]-adcZeroCounts)/adcOneVolt-vOffset)/amplificationFactor; }

Float_t A::v2_streight(Int_t pixel) { return rv2[pixel]; }

Float_t A::GetOffset() { return vOffset; }

Float_t A::GetAmpFactor() { return amplificationFactor; }

void A::SetAdcOneVolt(Float_t onevolt) { adcOneVolt=onevolt; }

Float_t A::GetAdcOneVolt() { return adcOneVolt; }

void A::SetNumberOfPixels(Short_t pix) { pdaNumberOfPixels=pix; }

Short_t A::GetNumberOfPixels() { return pdaNumberOfPixels; }

void A::SetReadoutSpeed(Float_t readout){ daqReadoutSpeed=readout; }

Float_t A::GetReadoutSpeed() { return daqReadoutSpeed; }

void A::SetZeroCounts(Float_t zc) { adcZeroCounts=zc; }

Float_t A::GetZeroCounts() { return adcZeroCounts; }

void A::SetAmplifier(Float_t v, Float_t offset)

{

vOffset= offset;

amplificationFactor=v;

}

//*********************

 
Received on Fri Feb 11 2005 - 14:51:31 MET

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