I am using ROOT in Windows with Visual Studio. I built ROOT from source and it went fine. I can use macros with root.exe perfectly. But I need to use ROOT libraries with other things as well as be able to debug codes and I just can’t get ROOT parts to compile in Visual Studio. For example, this basic code:
int main(int argc, char** argv)
TApplication theApp("App", &argc, argv);
TF1* f1 = new TF1("f1", "sin(x)/x" , 0, 10);
gives a compiler error:
‘__find_end’: is not a member of 'std` in file RWrap_libcpp_string_view.h in line 428.
What I tried:
- Added environment vars ROOTSYS and %ROOTSYS%\bin in Paths
- Solution properties–>Configuration properties–> Added the include and library dirs
- Solution properties–>Linker–>Input–> Added all the .lib files
it still shows the same error while compilation.
@bellenot can you help?
Please read tips for efficient and successful posting and posting code
ROOT Version: 6.21
It is most probably due to incompatible compiler flags.Could you simply try, in a
x86 Native Tools Command Prompt for VS 2019:
cl -nologo -O2 -MD -GR -EHsc -I%ROOTSYS%\include test.cpp /link -LIBPATH:%ROOTSYS%\lib libCore.lib libGpad.lib libHist.lib /out:test.exe
test.cpp with your file name)
Thanks. It at least compiles. But the program execution stalls and nothing happens.
It seems to be a problem with TApplication. Because without that, the program quits normally. I will use mainly use TMVA from ROOT so can you please tell me what should be a typical command/what other libs I should include?
What did you expect? You don’t do anything in your code…
TApplication is required to handle/process events. It you want to exit, simply call
And to use
TMVA, you have to link against
Sorry I forgot about the Draw() command. It works perfectly now. Thanks a lot.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.