2f8e3d9
From 4a4df0190ad24c0a3636994c2c23cb6c22e04589 Mon Sep 17 00:00:00 2001
2f8e3d9
From: Mattias Ellert <mattias.ellert@physics.uu.se>
2f8e3d9
Date: Thu, 24 Mar 2022 15:41:33 +0100
2f8e3d9
Subject: [PATCH 2/3] Remove namespace RooFit from libRooFitCore's LinkDef
2f8e3d9
2f8e3d9
The namespace is listed in the LinkDef's for both libRooFit and libRooFitCore.
2f8e3d9
2f8e3d9
ROOT only autoloads one of the libraries, for some reason usually
2f8e3d9
libRooFitCore. After this only symbols in the namespace from that
2f8e3d9
library are present. By removing the namespace from liRooFitCore's
2f8e3d9
LinkDef, only libRooFit can be chosen when autoloading. Since
2f8e3d9
libRooFit depends on libRooFitCore, both libraries are loaded, and the
2f8e3d9
symbols from the namespace in both libraries are available.
2f8e3d9
2f8e3d9
Fixes error:
2f8e3d9
2f8e3d9
IncrementalExecutor::executeFunction: symbol '_ZN6RooFit12bindFunctionEPKcPFddER10RooAbsReal' unresolved while linking function '_GLOBAL__sub_I_cling_module_217'!
2f8e3d9
You are probably missing the definition of RooFit::bindFunction(char const*, double (*)(double), RooAbsReal&)
2f8e3d9
Maybe you need to load the corresponding shared library?
2f8e3d9
Symbol found in '/builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'; did you mean to load it with '.L /builddir/build/BUILD/root-6.26.00/redhat-linux-build/lib/libRooFit.so.6.26.00'?
2f8e3d9
---
2f8e3d9
 roofit/roofitcore/inc/LinkDef.h | 5 ++++-
2f8e3d9
 1 file changed, 4 insertions(+), 1 deletion(-)
2f8e3d9
2f8e3d9
diff --git a/roofit/roofitcore/inc/LinkDef.h b/roofit/roofitcore/inc/LinkDef.h
2f8e3d9
index d421fd95cd..72c66db33b 100644
2f8e3d9
--- a/roofit/roofitcore/inc/LinkDef.h
2f8e3d9
+++ b/roofit/roofitcore/inc/LinkDef.h
2f8e3d9
@@ -105,7 +105,10 @@
2f8e3d9
 
2f8e3d9
 
2f8e3d9
 // Old LinkDef2.h
2f8e3d9
-#pragma link C++ namespace RooFit ;
2f8e3d9
+
2f8e3d9
+// "namespace RooFit" is in roofit/roofit/inc/Linkdef1.h
2f8e3d9
+// should not be in the dictionary for two different libraries
2f8e3d9
+// #pragma link C++ namespace RooFit ;
2f8e3d9
 #pragma link C++ namespace RooFitShortHand ;
2f8e3d9
 #pragma link C++ class RooDouble+ ;
2f8e3d9
 #pragma link C++ class RooEffGenContext+ ;
2f8e3d9
-- 
2f8e3d9
2.35.1
2f8e3d9