Sådan integreres CINT i en C ++-app på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne vide, hvordan man integrerer CINT i en C ++-kode på Windows 7 eller NT.


På windows7 skal jeg skrive et C ++-program, der læser et C ++-program fra en inputfil, kører det og tæller, hvor mange linjer kode blev udført under løbetidet. Jeg fandt den bedste måde at gøre dette på, ved at (1) ajourføre læseprogramkoden, så når en kommando i den er udført, er en tællerværdi forøget (for kommandoer som retur eller pause vil tællerværdien øges før udførelsen) og (2) udførelse af det opdaterede program med en C ++ tolk, læsning af modværdien, når den vender tilbage.
Jeg vil sætte pris på andre tilgange til at løse disse problemer.


Jeg søgte på internettet og fundet CINT ville være den korrekte tolk til at bruge (selvom gammel). Jeg hentede den fra ROOT-hjemmesiden, installerede den og kaste TestApp-demoen, men byggede den. Jeg fik en koblingsfejl, jeg fandt ikke hvordan man skulle løse. Derfor har jeg brug for din hjælp.


Det bedste ville være, hvis nogen kunne give mig et projekt, der indlejrede CINT i C ++-kode på Windows, så jeg kan teste på min maskine og finde min fejl.


Jeg vil sætte pris på alle andre værdifulde input også.


Tak på forhånd

Bedste reference


Et mere fornuftigt alternativ ville være at ændre kildefilen, som du læser den. For eksempel, når dette er dit input:


void foo() {
  std::cout << "Hello";
  std::cout << " World" << std::endl;
}


du omdanner det til dette:


static int LineCounter = 0;
extern "C" int getLineCounter() { return LineCounter; }

extern "C" void foo() {
  ++LineCounter;
  std::cout << "Hello";
  ++LineCounter;
  std::cout << " World" << std::endl;
}


og send det til en kompilator. Kompilér det til en DLL, ring til LoadLibrary, GetProcAddress("foo") og GetProcAddress("getLineCounter").