[Bug 169] New: Compilation of module fails with -unittest
Don Clugston
dac at nospam.com.au
Tue May 30 23:16:22 PDT 2006
There's no CreateEvent() function in Windows.
It's CreateEventW() or CreateEventA(), which then get aliased:
extern (Windows)
{
HANDLE CreateEventW(
...
}
alias CreateEventW CreateEvent;
d-bugmail at puremagic.com wrote:
> http://d.puremagic.com/bugzilla/show_bug.cgi?id=169
>
> Summary: Compilation of module fails with -unittest
> Product: D
> Version: 0.159
> Platform: PC
> OS/Version: Windows
> Status: NEW
> Severity: normal
> Priority: P2
> Component: DMD
> AssignedTo: bugzilla at digitalmars.com
> ReportedBy: CppCoder at gmail.com
>
>
> module eventpool;
>
> import std.c.windows.windows;
>
> extern (Windows)
> {
> HANDLE CreateEvent(
> LPSECURITY_ATTRIBUTES lpEventAttributes,
> BOOL bManualReset,
> BOOL bInitialState,
> LPCTSTR lpName
> );
>
> BOOL SetEvent(
> HANDLE hEvent
> );
>
> BOOL ResetEvent(
> HANDLE hEvent
> );
> }
>
> class Event
> {
> public HANDLE event;
>
> public this( bool manualReset, bool initialState )
> {
> event = CreateEvent( null, manualReset, initialState, null );
> }
>
> public this()
> {
> this( true, false );
> }
>
> public ~this()
> {
> CloseHandle( event );
> }
>
> bool signalled()
> {
> ulong waitRes;
> waitRes = WaitForSingleObject( event, 0 );
>
> return (waitRes == WAIT_OBJECT_0);
> }
>
> void signalled( bool isSignalled )
> {
> if ( isSignalled )
> {
> SetEvent( event );
> }
> else
> {
> ResetEvent( event );
> }
> }
>
> unittest
> {
> Event ev = new Event();
> ev.signalled = true;
> assert( ev.signalled == true );
> ev.signalled = false;
> assert( ev.signalled == false );
>
> delete ev;
> }
> }
>
> when compiling with "-unittest":
> eventpool.obj(eventpool)
> Error 42: Symbol Undefined _CreateEvent at 16
> --- errorlevel 1
>
>
More information about the Digitalmars-d-bugs
mailing list