Allocating memory in D shared library when accessed from C++

Martin Drašar drasar at ics.muni.cz
Mon Dec 19 15:36:31 PST 2011


Dne 20.12.2011 0:02, Trass3r napsal(a):
> Am 19.12.2011, 23:13 Uhr, schrieb Martin Drašar <drasar at ics.muni.cz>:
>
>> Dne 19.12.2011 23:09, Trass3r napsal(a):
>>>> It actualy returns a procedure address and the procedure is called. It
>>>> lands inside export extern (C) int magicNumber() and crashes when
>>>> attempting to allocate memory for Something.
>>>
>>> Did you properly initialize druntime?
>>
>> As I am just starting with D, the most precise answer I can give you
>> is: I don't know... how do I tell? Or in another way - the code for D
>> library is almost complete except for imports. The rest was done for
>> me by Visual D.
>
> It's explained there: http://www.dlang.org/dll.html
>

Well as far as I can tell, the runtime is initialized with call to 
Runtime.initialize(). This call is executed inside dll_process_attach here:

> extern (Windows)
> BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved)
> {
>     final switch (ulReason)
>     {
>     case DLL_PROCESS_ATTACH:
>         g_hInst = hInstance;
>         dll_process_attach( hInstance, true );
>         break;

so I would say that the runtime is properly initialized.

Martin


More information about the Digitalmars-d-learn mailing list