Building CLING dll from source code

Hi Team,
I am new to the CLING interpreter. Currently, we are using CINT interpreter in our project for writing C++ scripts and we are using VS2012.
Since CINT is not supprorted on VS2019, we are looking at using CINT alternative CLING interpreter and migrate our project to VS2019.
The way CINT is used in our project is as below:

  1. Generate a .cxx file which contains all the declarations of functions used in my project(MSVP) using the below command
    .\cint.exe -w0 -nG__cpp_SVP.cxx -D__MAKECINT__ -DG__MAKECINT -c-1 -A -I…\Jessica\Comm\ -I…\Jessica\Sas\ -I…..\Common_Lib\ParameterHandler\Inc -I…..\Base_Lib\msvp_com -I…..\Common_Lib\MSVP_Namespace -I…..\SAS_Lib\mstk_com -I…\LibCint\cint\lib -I…\CommonAPI -I…\LibCint -I…..\Infusion_LIB -I…..\SAS_Lib\scwl -I…..\SAS_Lib\scwl\Buffer -I…..\SAS_Lib\Inc -I…..\SAS_Lib\sdil -I…..\Base_Lib\CoreLogger -I…\SED_Lib\SED_CINT\ -I…\SED_Lib\SED_LIB\ -I…\SED_Lib\SED_API\ -I…..\MSTK_LIB\Framework\Inc -I…\Jessica_MSTK\Comm -I…..\SSuite_Lib\SSuite -I…..\SSUITE_Lib\Stor_CLI -I…/…/Base_Lib/MSVPConfiguration -I…/…/Base_Lib/DrvOOB -I…/…/Base_Lib/CommonAPI -I…/…/Base_Lib/Inc -DG__REDIRECTIO -DG__SHAREDLIB -D_SAS -DG__WIN32 -DWIN32 -D_WIN32 -DG__NEWSTDHEADER -D_CRT_SECURE_NO_DEPRECATE=1 -DG__HAVE_CONFIG -DG__NOMAKEINFO MSTK_SCSI_Cmd.h MSTK_SCSI_Helper.h TOOB.h CommonAPI.h ParameterDictionary.h SED.h Sas_Namespace.h PMU_Namespace.h SasCommApi.h Jessica.h IoStress.h JessicaType.h CintUtility.h BufferPattern_MSTK.h DeviceCtx_MSTK.h IoStress_MSTK.h IoStressType_MSTK.h LBAList_MSTK.h StressOperation_MSTK.h MSTK_SCSI_Cmd_RFX.h ResultUpdator.h

  2. Then , we build a CINT.dll using the above generated .cxx file and all the other source files of CINT

So, how should I proceed here if I want to use CLING in place of CINT in my project??

Any help/inputs would be greatly appreciated!
Thanks,
Prabhuraj

Welcome to the ROOT Forum!
I’m not sure if the syntax of the cling.exe arguments match the ones from cint.exe. Maybe @vvassilev or @Axel know

Thank you @bellenot for the response. I am looking forward for ROOT forum support on this !

Hi @vvassilev / @bellenot ,

Any updates for my query posted above?

I have even dropped a mail in detail to “axel@cern.ch” yesterday.
Looking for some details/inputs

Apologies for the late response.

With cling you don’t need to do this anymore. You can simply #include your headers into cling and that’s it.

What’s your workflow, would this work for you?

Hi @bellenot / @Axel ,

I am not sure whats the issue with the inclusion of windows standard header file “atlstr.h” into the CLING interpreter?
I see the error as below upon including any header file that has <atlstr.h> header file in it:
[cling]$ .L MSVP_Replication.h
“[runStaticInitializersOnce]: Failed to materialize symbols: { (main, { ?ATL_CREATE_OBJECT@CComApartment@ATL@@2IA, ??C@

Can you please let me know whats the issue here with “atlstr.h” header file inclusion?

It looks like ATL is not supported, but since it is MS specific, I don’t think we can do anything about it. Maybe @vvassilev can comment about this?

OK, I found the origin of the issue (FYI @vvassilev @Danilo): this is the implicit using namespace std; in the interpreter.
A simple example (without cling or root involed):

#include <iostream>
using namespace std;
#include <atlstr.h>

int main() {
    std::cout << "hello world!" << std::endl;
    return 0;
}

produces:

C:\Users\bellenot\rootdev>cl -nologo -MD -GR -EHsc -Zc:__cplusplus -std:c++17 atlstr.cxx
atlstr.cxx
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(192): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(962): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(970): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypesbase.h(437): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypesbase.h(462): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypesbase.h(479): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(77): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(86): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(92): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(98): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(104): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(110): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\wtypes.h(485): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidlbase.h(2175): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidlbase.h(2189): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidlbase.h(7882): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidlbase.h(7898): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(9746): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(10275): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(10307): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(10786): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(10801): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(11244): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(12977): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(12992): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14658): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14674): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14821): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14860): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14877): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(14894): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(15139): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\objidl.h(15158): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\oaidl.h(563): error C2872: 'byte': ambiguous symbol
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\shared\rpcndr.h(191): note: could be 'unsigned char byte'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include\cstddef(28): note: or       'std::byte'

C:\Users\bellenot\rootdev>

And when removing the using namespace std; line, there is no error:

C:\Users\bellenot\rootdev>cl -nologo -MD -GR -EHsc -Zc:__cplusplus -std:c++17 atlstr.cxx
atlstr.cxx

C:\Users\bellenot\rootdev>

And FYI, I opened a GitHub issue: The implicit `using namespace std;` can have nasty side effects on Windows. · Issue #14602 · root-project/root · GitHub

A post was split to a new topic: Cling: unknown type name ‘source’