[Bug 169] New: Compilation of module fails with -unittest
akcom
CppCoder at gmail.com
Wed May 31 10:14:39 PDT 2006
Don Clugston wrote:
> 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
>>
>>
If I didn't feel stupid before...
More information about the Digitalmars-d-bugs
mailing list