Dynamically loading a C11 compiled DLL within C8 app


my main application is still written in Clarion8.

But I’m now doing some things in Clarion11.
I’ve created a DLL with Clarion11 which is compiled as a DLL with the “lib” setting.
So this DLL is a standalone DLL which does not use the Clarion runtime DLL’s.

The problem is that when I try to dynamically load the C11 DLL inside my Clarion8 app I get the following message:

This message looks like it would be a warning because it says “can work incorrectly”.
But the problem is that after clicking OK the dynamic loading of the DLL fails.

Is there any compiler setting I can use in the C11 DLL to avoid the RTL version check?

Any ideas?



Mixing Clarion versions is not something you can do, AFAIK.

I thought I remembered someone creating some kind of framework to be able to accomplish this, but I can’t remember who or where it was.

1 Like

But the C11 DLL is compiled in standalone mode. It does not use the external runtime files. So there should be no conflict between the versions.

Yet, it doesn’t work.

Clarion allows to use several instances of the RTL (for example, CLARUN.DLL and CLARUNL.LIB linked locally to some executable) in one process but all these instances must be of compatible versions. This is because some data must be shared between all RTL instances. An example of such data is the per-thread string stack. There are about 30 data objects/structures which must be shared.
RTLs in C8 and C11 are not compatible.

1 Like