digitalmars.D - dll error
- sdv (43/43) Dec 01 2011 a.d
- Rainer Schuetze (12/55) Dec 01 2011 You have run into a bug in the linker:
a.d
----------------------------
import core.runtime;
import core.sys.windows.windows;
import core.sys.windows.dll;
//import mach3plugins;
__gshared HINSTANCE g_hInst;
extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID
pvReserved)
{
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;
default:
}
return true;
}
//D, C, C++, Pascal, Windows, System
extern (C) export void MyVer0()
{
}
extern (C) export void MyVer1()
{
}
extern (C) export void MyVer2()
{
}
----------------------------------
out:
_MyVer0
MyVer1
MyVer2
Dec 01 2011
On 01.12.2011 18:01, sdv wrote:
a.d
----------------------------
import core.runtime;
import core.sys.windows.windows;
import core.sys.windows.dll;
//import mach3plugins;
__gshared HINSTANCE g_hInst;
extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID
pvReserved)
{
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;
default:
}
return true;
}
//D, C, C++, Pascal, Windows, System
extern (C) export void MyVer0()
{
}
extern (C) export void MyVer1()
{
}
extern (C) export void MyVer2()
{
}
----------------------------------
out:
_MyVer0
MyVer1
MyVer2
You have run into a bug in the linker:
http://d.puremagic.com/issues/show_bug.cgi?id=3956
A workaround is to use a "noop" def-file:
EXETYPE NT
LIBRARY "a.dll"
CODE PRELOAD DISCARDABLE
DATA PRELOAD MULTIPLE
EXPORTS
_MyVer0 = _MyVer0 PRIVATE
_MyVer1 = _MyVer1 PRIVATE
_MyVer2 = _MyVer2 PRIVATE
Dec 01 2011








Rainer Schuetze <r.sagitario gmx.de>