Questions: configure error; CINT7 extern "[dllname]&amp

Few questions about CINT (dynamically loaded as scripter engine in windows application):

  1. extern “[dllname]” { … }
    This works fine with cint5, but i can’t get it working with cint7.

  2. Is there a way to see what is in dictionary from script, or with API?

  3. configure (with cygwin) always gives error, but seem to be working, and i’m able to build:

$ ./configure --arch=msvc8 --coreversion=new --debug ./configure: command substitution: line 15: syntax error near unexpected token `)' ./configure: command substitution: line 15: `uname -a | grep -i sunos 2> /dev/null;ls -l $WHICHSH | grep dash 2> /dev/null )'

oops… never mind on 3rd - just got update from repository - it got fixed

[quote]1) extern “[dllname]” { … }
This works fine with cint5, but i can’t get it working with cint7.[/quote] How does it fail? Can you send me a complete running example?

[quote]2) Is there a way to see what is in dictionary from script, or with API?[/quote]Not directly. You can iterate through the G__ClassInfo(s) and check the FileName which would point to the shared library that contains the dictionary.

Cheers,
Philippe

ok, here is example:

[code]extern “ScriptCollections.dll”
{
void * MapStr2PtrCreate();
}

void * pMap;

int main(int a)
{
pMap = MapStr2PtrCreate();
return 0;
}[/code]

And it says MapStr2PtrCreate was declared but not found. But it works with cint5. And it is for different dlls not only this particular one.

I cannot bild CINT7 right now, I got latest but now there are build errors:

[quote]struct.cxx
cint7/src/struct.cxx(201) : error C2440: ‘’ : cannot convert from ‘Reflex::Scope’ to 'G__inheritance::G__Entr
y’
No constructor could take the source type, or constructor overload resolution was ambiguous[/quote]

Hi,

the build issue is fixed.

Cheers, Axel.

Thank you!

Now it compiles fine.

Now, when I build dll that is dynamically loaded scripting emgine based on CINT7, it gives warnings:

[code]1>c:\cint\reflex\inc\reflex\kernel.h(382) : warning C4275: non dll-interface class ‘std::exception’ used as base for dll-interface class 'Reflex::RuntimeError’
1> e:\program files (x86)\microsoft visual studio 8\vc\include\exception(95) : see declaration of 'std::exception’
1> c:\cint\reflex\inc\reflex\kernel.h(382) : see declaration of 'Reflex::RuntimeError’
1>c:\cint\reflex\inc\reflex\kernel.h(387) : warning C4251: ‘Reflex::RuntimeError::fMsg’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class 'Reflex::RuntimeError’
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits,
1> _Ax=std::allocator
1> ]
1>c:\cint\reflex\inc\reflex\internal\typename.h(139) : warning C4251: ‘Reflex::TypeName::fName’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class ‘Reflex::TypeName’

1>c:\cint\reflex\inc\reflex\internal\scopename.h(125) : warning C4251: ‘Reflex::ScopeName::fName’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class ‘Reflex::ScopeName’

1>c:\cint\reflex\inc\reflex\internal\typetemplatename.h(141) : warning C4251: ‘Reflex::TypeTemplateName::fName’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class ‘Reflex::TypeTemplateName’

1>c:\cint\reflex\inc\reflex\internal\memberbase.h(333) : warning C4251: ‘Reflex::MemberBase::fName’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class ‘Reflex::MemberBase’

1>c:\cint\reflex\inc\reflex\internal\membertemplatename.h(141) : warning C4251: ‘Reflex::MemberTemplateName::fName’ : class ‘std::basic_string<_Elem,_Traits,_Ax>’ needs to have dll-interface to be used by clients of class ‘Reflex::MemberTemplateName’[/code]

And, this resulting scripting engine still cannot import from some dll (as descibed in first post here in 1. )
P.S. It does not work with CINT7 interpreter command prompt either:
X runme.cxx
where file runme.cxx is:

[code]
extern “ScriptCollections.dll”
{
void * MapStr2PtrCreate();
}

void runme()
{
void * mapPairToIndex = MapStr2PtrCreate();
}[/code]
Again, this works fine with CINT5

Hi,

the warnings can be ignored (well, it would be better if the API would not rely on these STL classes, but that’s for later).

We’ll look into the extern “dll” issue in the coming days. Sorry about the slow response; we currently have a reduced work force with a release coming up…

Cheers, Axel.

Hi!

Any update on extern dll imports issue?

Hi,

sorry, we will not fix this in CINT7. Please use CINT5.

Cheers, Axel.

Oh…

Will there be any way to use dlls in CINT7?

Hi,

Indeed we are not planning on adding support the extern dlls import without dictionary in CINT7.

Cheers,
Philippe.