How to get normal DLL method name

Denis Mezhov d.o.mezhov at gmail.com
Sat Feb 15 23:17:47 PST 2014


Don't work

DLL

module dllmain;

import std.c.windows.windows;
import core.sys.windows.dll;
import core.stdc.stdio;

__gshared HINSTANCE g_hInst;

export void dllprint()
{
	printf("hello dll world\n");	
}

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;

     case DLL_PROCESS_DETACH:
         dll_process_detach( hInstance, true );
         break;

     case DLL_THREAD_ATTACH:
         dll_thread_attach( true, true );
         break;

     case DLL_THREAD_DETACH:
         dll_thread_detach( true, true );
         break;
     }
     return true;
}




Main

import core.runtime;

import std.stdio;
import std.container;
import std.range;
import std.c.windows.windows;

alias void function() aaa;
aaa bbb;

extern (Windows)
void main(string[] args)
{
    HMODULE h;
    FARPROC fp;	
    h = cast(HMODULE) Runtime.loadLibrary("DynamicLib1.dll");	
    if (h is null)
       {
          printf("error loading mydll.dll\n");
       }
    fp = GetProcAddress(h, "dllprint");  //Don't work
       if (fp is null)
       {
           printf("error loading symbol()\n");
       }

   bbb = cast(aaa)fp;
   bbb();

   readln();
}


More information about the Digitalmars-d-learn mailing list