Как встроить CINT в приложение C ++ в Windows? - PullRequest
1 голос
/ 13 марта 2012

Я хотел бы знать, как встроить CINT в код C ++ в Windows 7 или NT.

В Windows7 мне нужно написать программу C ++, которая читает программу C ++ из входного файла и запускает ее.и подсчитывает, сколько строк кода было выполнено во время выполнения.Я обнаружил, что лучший способ сделать это - (1) обновить прочитанный программный код, чтобы при выполнении команды в ней значение счетчика увеличивалось (для таких команд, как return или break значение счетчика будет увеличено перед выполнением),и (2) выполнение обновленной программы с интерпретатором C ++, считывание значения счетчика после его возвращения.Я был бы признателен за другие подходы к решению этой проблемы.

Я искал в Интернете и обнаружил, что CINT будет правильным интерпретатором для использования (хотя и старым).Я скачал его с домашней страницы ROOT, установил его и пошел, закидывая демо TestApp, но, собрав его, я получил ошибку компоновки, которую я не нашел, как решить.Поэтому мне нужна ваша помощь.

Лучше всего было бы, если бы кто-нибудь смог предоставить мне проект, встраивающий CINT в код C ++ в Windows, чтобы я мог протестировать на своей машине и найти свою ошибку.

Я буду признателен за любой другой ценный вклад.

Заранее спасибо

1 Ответ

0 голосов
/ 13 марта 2012

Более разумной альтернативой будет изменение исходного файла по мере его прочтения. Например, когда это ваш ввод:

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

Вы преобразуете его в это:

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

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

и передайте это компилятору. Скомпилируйте его в DLL, вызовите LoadLibrary, GetProcAddress("foo") и GetProcAddress("getLineCounter").

...