Unresolved symbol in .L loaded files

I’m unable to call functions defined in a shared library loaded with .L. In looking at the code, I don’t see how it would be able to find the new symbols. There is an ExposeHiddenSharedLibrarySymbols method in DynamicLibraryManager that would do the trick, but it doesn’t seem to be called anywhere.

Hi,

What file are you trying to load? What version of root on which platform?

I’m porting cling to Windows 64-bit. I’m loading a custom library in a dll. I’ve successfully been able to do this by modifying DynamicLibraryManager::loadLibrary with the following changes:

  • Remove DONT_RESOLVE_DLL_REFERENCES flags from LoadLibraryEx
  • Call ExposeHiddenSharedLibrarySymbols(dyLibHandle);

I’m not sure if these are appropriate changes, however.

Hi,

Thanks for your feedback and for your efforts porting cling to Win64. Nevertheless, we will soon update llvm and clang and until then we won’t spend too much efforts fixing issues that could be automatically resolved with those new versions. We will resume work on cling (and ROOT 6) on Windows once llvm and clang have been updated.

Cheers, Bertrand.

I am also struggling compiling cling for Windows. Tried VS2015, VS2013 and MinGW. All of them have their own issues and it looks like mission impossible. One of the problems is the old revision of LLVM and clang enforced by the cling patch.

You mean you will update the actual LLVM and cland not just update the revision for your pathch?
I hope for the first option. Removing the need for patch would be a great step forward.

[quote=“mfojtak”]You mean you will update the actual LLVM and cland not just update the revision for your pathch?
I hope for the first option. Removing the need for patch would be a great step forward.[/quote]
Yes, we’ll update and take the most recent LLVM & Clang. But we will still need patches (not Windows specific)