Failed to load library C:\root\bin\libROOTDataFrame.dll on Windows 10

Describe the bug

Cannot create RDataFrame instance using pre-compiled binary distribution of ROOT for Windows.

Expected behavior

Successful creation of RDataFrame instance.

To Reproduce

Launch Visual Studio 2022 Developer Command Prompt.

**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.14.21
** Copyright (c) 2025 Microsoft Corporation
**********************************************************************

C:\Program Files\Microsoft Visual Studio\2022\Community>cd %userprofile%

C:\Users\user>C:\root\bin\thisroot.bat

C:\Users\user>root -l
root [0] ROOT::RDataFrame d(1);
cling::DynamicLibraryManager::loadLibrary(): LoadLibrary: returned 126:
Error in <AutoloadLibraryMU>: Failed to load library C:\root\bin\libROOTDataFrame.dll[runStaticInitializersOnce]: Failed to materialize symbols: { (main, { $.cling-module-9.__inits.0, __orc_init_func.cling-module-9, ??__Fd@__cling_N50@@YAXXZ, ?d@__cling_N50@@3VRDataFrame@ROOT@@A, _GLOBAL__sub_I_cling_module_9, .weak.??__Ed@__cling_N50@@YAXXZ.default.?d@__cling_N50@@3VRDataFrame@ROOT@@A, .weak.??__Fd@__cling_N50@@YAXXZ.default.?d@__cling_N50@@3VRDataFrame@ROOT@@A, .weak._GLOBAL__sub_I_cling_module_9.default.?d@__cling_N50@@3VRDataFrame@ROOT@@A, ?__cling_Un1Qu30@__cling_N50@@YAXPEAX@Z, ??__Ed@__cling_N50@@YAXXZ }) }
cling::DynamicLibraryManager::loadLibrary(): LoadLibrary: returned 126:
Error in <TCling__LazyFunctionCreatorAutoloadForModule>: Failed to load library C:\root\bin\libROOTDataFrame.dll
cling::DynamicLibraryManager::loadLibrary(): LoadLibrary: returned 126: Ё$
Error in <TCling__LazyFunctionCreatorAutoloadForModule>: Failed to load library C:\root\bin\libROOTDataFrame.dll
IncrementalExecutor::executeFunction: symbol '??0RDataFrame@ROOT@@QEAA@_K@Z' unresolved while linking [cling interface function]!
You are probably missing the definition of public: __cdecl ROOT::RDataFrame::RDataFrame(unsigned __int64) __ptr64
Maybe you need to load the corresponding shared library?
Symbol found in 'C:\root\bin\libROOTDataFrame.dll'; did you mean to load it with '.L C:\root\bin\libROOTDataFrame.dll'?
IncrementalExecutor::executeFunction: symbol '??1RDataFrame@ROOT@@QEAA@XZ' unresolved while linking [cling interface function]!
You are probably missing the definition of public: __cdecl ROOT::RDataFrame::~RDataFrame(void) __ptr64
Maybe you need to load the corresponding shared library?
Symbol found in 'C:\root\bin\libROOTDataFrame.dll'; did you mean to load it with '.L C:\root\bin\libROOTDataFrame.dll'?

Edit: compare with ROOT v6.36.04 installed via dnf on AlmaLinux 9

[user@desktop ~]$ root -l
root [0] ROOT::RDataFrame d(1)
(ROOT::RDataFrame &) An empty data frame that will create 1 entries

Setup

I downloaded pre-compiled binary distribution for Windows Visual Studio 2022 64-bit x64 from Release 63606 - ROOT (root_v6.36.06.win64.python311.vc17.exe) and installed it to C:\root.

ROOT v6.36.06
Built for win64 on Nov 25 2025, 11:53:37
From tags/v6-36-06@v6-36-06
With MSVC 19.39.33521.0
Binary directory: C:\root\bin

Visual Studio Community 2022 17.14.21
Microsoft (R) C/C++ Optimizing Compiler Version 19.44.35221 for x64

Additional context

For some reason C:\root\bin\libROOTDataFrame.dll is not loaded automatically despite calling thisroot.bat.
Otherwise ROOT seems to be working correctly.

Drawing simple histogram works
**********************************************************************
** Visual Studio 2022 Developer Command Prompt v17.14.21
** Copyright (c) 2025 Microsoft Corporation
**********************************************************************

C:\Program Files\Microsoft Visual Studio\2022\Community>cd %userprofile%

C:\Users\user>C:\root\bin\thisroot.bat

C:\Users\user>root -l
root [0] TH1D h("h", "", 10u, -5.0, 5.0);
root [1] h.FillRandom("gaus");
root [2] h.Draw();
Info in <TCanvas::MakeDefCanvas>:  created default TCanvas with name c1
root [3]

I cannot reproduce the issue with root_v6.36.06.win64.python311.vc17.zip:

C:\Users\bellenot>root
   ------------------------------------------------------------------
  | Welcome to ROOT 6.36.06                        https://root.cern |
  | (c) 1995-2025, The ROOT Team; conception: R. Brun, F. Rademakers |
  | Built for win64 on Nov 25 2025, 11:53:37                         |
  | From tags/v6-36-06@v6-36-06                                      |
  | With MSVC 19.39.33521.0                                          |
  | Try '.help'/'.?', '.demo', '.license', '.credits', '.quit'/'.q'  |
   ------------------------------------------------------------------

root [0] ROOT::RDataFrame d(1);
root [1]

But I’ll check what can be causing this…

OK, I found the problem. There is apparently a dependency of RDataFrame on SQLite. Can you download the SQLite DLL (v3.51.1) from SQLite Download Page and try again?

I’ve downloaded DLL for Windows x64, SQLite version 3.51.1 and put sqlite3.dll into C:\root\bin\.
Now RDataFrame works correctly. Thank you very much!

This is quite inconvenient. Could a future version of the corresponding distribution of ROOT for Windows not include this library? This problem was not present in 6.32…

I agree, but we cannot distribute dependent binaries. Let’s ask @vpadulan why RDataFrame now somehow depends on SQLite

License issue? You could provide a script to download it and finalize the ROOT “distribution”. If you ship it like this it’s not a fully working ROOT distribution anymore IMHO.

or you need to add some instruction in section Windows → Important installation notes on e.g. Release 63800 - ROOT

We’ll decide on the best solution. I’d prefer to get rid of this dependency.