On Thu, 24 Dec 2009 10:49:01 -0500, Phil Deets <[email protected]> wrote:

I'll work on reproducing it in a smaller scale

Reduced test case:

test.c (compiled with Visual C++ 2008 Express Edition)

// Adapted from sample code at http://msdn.microsoft.com/en-us/library/ms680582(VS.85).aspx
#include <windows.h>
#include <strsafe.h>

void main()
{
        if(!LoadLibraryA("d.dll"))
        {
                LPVOID lpMsgBuf;
                DWORD dw = GetLastError();
                FormatMessageA(
                        FORMAT_MESSAGE_ALLOCATE_BUFFER |
                        FORMAT_MESSAGE_FROM_SYSTEM |
                        FORMAT_MESSAGE_IGNORE_INSERTS,
                        NULL,
                        dw,
                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                        (LPSTR) &lpMsgBuf,
                        0, NULL );
                printf("LoadLibrary failed with error %d: %s\n", dw, lpMsgBuf);
                LocalFree(lpMsgBuf);
        }
}

dll.d:

import std.c.windows.windows;
int x;
extern (Windows) BOOL DllMain(HINSTANCE, ULONG, LPVOID) {
        x=0;
        return true;
}

dll.def:

LIBRARY         "d.dll"
EXETYPE         NT
SUBSYSTEM       WINDOWS
CODE            SHARED EXECUTE
DATA            WRITE

Compiled with:

dmd dll.d dll.def -ofd.dll

When I run the C app, I get the output "LoadLibrary failed with error 998: Invalid access to memory location."

Reply via email to