Thread overview
Object.factory from shared libraries
Sep 26, 2014
krzaq
Sep 26, 2014
Jacob Carlborg
Sep 26, 2014
krzaq
Sep 26, 2014
Jacob Carlborg
Sep 26, 2014
Cliff
September 26, 2014
I'd like to extend my program's functionality from plugins, that'd be loaded by name (or not) as requested by the config file. Is it possible to throw in a few dlls/sos implementing those new modules into a directory and hope that they will be all loaded and available to Object.factory in the main executable?

I hope I'm clear enough.
September 26, 2014
On 26/09/14 14:37, krzaq wrote:
> I'd like to extend my program's functionality from plugins, that'd be
> loaded by name (or not) as requested by the config file. Is it possible
> to throw in a few dlls/sos implementing those new modules into a
> directory and hope that they will be all loaded and available to
> Object.factory in the main executable?
>
> I hope I'm clear enough.

If you either enumerate all dynamic libraries in a directory, or a list from a config file, then use dlopen on all libraries. Then I think Object.factory should work. But dynamic libraries are basically only working on Linux.

-- 
/Jacob Carlborg
September 26, 2014
On Friday, 26 September 2014 at 14:14:05 UTC, Jacob Carlborg wrote:
> On 26/09/14 14:37, krzaq wrote:
>> I'd like to extend my program's functionality from plugins, that'd be
>> loaded by name (or not) as requested by the config file. Is it possible
>> to throw in a few dlls/sos implementing those new modules into a
>> directory and hope that they will be all loaded and available to
>> Object.factory in the main executable?
>>
>> I hope I'm clear enough.
>
> If you either enumerate all dynamic libraries in a directory, or a list from a config file, then use dlopen on all libraries. Then I think Object.factory should work. But dynamic libraries are basically only working on Linux.

That would be satisfactory to me, except for the linux-only part.

In that case, I think I'll simply try to call filename() as the factory function in each library - that should work everywhere, right?
September 26, 2014
On 2014-09-26 16:24, krzaq wrote:

> That would be satisfactory to me, except for the linux-only part.
>
> In that case, I think I'll simply try to call filename() as the factory
> function in each library - that should work everywhere, right?

Dynamic libraries only work properly on Linux. This has nothing to do with Object.factory.

-- 
/Jacob Carlborg
September 26, 2014
On Friday, 26 September 2014 at 15:45:11 UTC, Jacob Carlborg
wrote:
> On 2014-09-26 16:24, krzaq wrote:
>
>> That would be satisfactory to me, except for the linux-only part.
>>
>> In that case, I think I'll simply try to call filename() as the factory
>> function in each library - that should work everywhere, right?
>
> Dynamic libraries only work properly on Linux. This has nothing to do with Object.factory.

What is the nature of D's so/dll support?  Or is there a page
describing it?