Thread overview
Is it possible to make a library (dll/so) from separated .d files?
Apr 03, 2023
dog2002
Apr 03, 2023
dog2002
Apr 03, 2023
Hipreme
Apr 03, 2023
dog2002
April 03, 2023

Hello. The title sounds weird, but I try to explain it better.

In Unreal Engine and Unity, source code files don't use main() and other important functions. They have only a class. Like this:

class SomeClass: someInterface
{
    AFunctionFromTheInterface1()
    {

    }

    AFunctionFromTheInterface2()
    {

    }
}

And then all the source code files will be compiled into a single .dll/.so library, so the game engine can use one in a game.

I don't know what compiler does Unreal Engine use, but it uses C++.

Is it possible to do so in D?

April 03, 2023

On Monday, 3 April 2023 at 09:08:42 UTC, dog2002 wrote:

>

Hello. The title sounds weird, but I try to explain it better.

In Unreal Engine and Unity, source code files don't use main() and other important functions. They have only a class. Like this:

class SomeClass: someInterface
{
    AFunctionFromTheInterface1()
    {

    }

    AFunctionFromTheInterface2()
    {

    }
}

And then all the source code files will be compiled into a single .dll/.so library, so the game engine can use one in a game.

I don't know what compiler does Unreal Engine use, but it uses C++.

Is it possible to do so in D?

There are examples of code here https://docs.unrealengine.com/5.1/en-US/unreal-engine-for-unity-developers/

April 03, 2023

On Monday, 3 April 2023 at 09:08:42 UTC, dog2002 wrote:

>

Hello. The title sounds weird, but I try to explain it better.

In Unreal Engine and Unity, source code files don't use main() and other important functions. They have only a class. Like this:

class SomeClass: someInterface
{
    AFunctionFromTheInterface1()
    {

    }

    AFunctionFromTheInterface2()
    {

    }
}

And then all the source code files will be compiled into a single .dll/.so library, so the game engine can use one in a game.

I don't know what compiler does Unreal Engine use, but it uses C++.

Is it possible to do so in D?

Yes, actually, this is the very same approach I've done for my engine, since holding the main function I can take care of boring platform details.

For doing that you'll need some way to make your main program know about your class. The way I do that is by defining another entry function which is always defined enemy you have a game project.

You can take a look at https://github.com/MrcSnm/HipremeEngine/blob/66618c7783d62107bcaad393d5af5b86c9387b34/api/source/hip/api/package.d#L58

The user uses that engine mixin template, which will add the engine entry point to your game script, after that, whenever my engine loads the Dll, it will know what function to call and what scene it should spawn

April 03, 2023

On Monday, 3 April 2023 at 11:29:12 UTC, Hipreme wrote:

>

On Monday, 3 April 2023 at 09:08:42 UTC, dog2002 wrote:

>

Hello. The title sounds weird, but I try to explain it better.

In Unreal Engine and Unity, source code files don't use main() and other important functions. They have only a class. Like this:

class SomeClass: someInterface
{
    AFunctionFromTheInterface1()
    {

    }

    AFunctionFromTheInterface2()
    {

    }
}

And then all the source code files will be compiled into a single .dll/.so library, so the game engine can use one in a game.

I don't know what compiler does Unreal Engine use, but it uses C++.

https://github.com/MrcSnm/HipremeEngine/blob/66618c7783d62107bcaad393d5af5b86c9387b34/api/source/hip/api/package.d#L58

Thank you, looks almost what I need!