August 30, 2007
Hello.

I have an interface that I made private as the interface is module specific. For this example, I created the smallest test code that exhibits the problem.

I can compile the source but when it links, I get:

> F:\opt\digitalmars\dmd\bin\..\..\dm\bin\link.exe main,,,user32+kernel32/noi;
> OPTLINK (R) for Win32  Release 7.50B1
> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
> 
> main.obj(main)
>  Error 42: Symbol Undefined _D4main15ConnectionState10checkStateMFZb
> --- errorlevel 1

If I remove the private attribute from the interface, it works.

I am using DMD 1.020. Is this a DMD bug?

Thanks,

Myron.



August 30, 2007

Myron Alexander wrote:
> Hello.
> 
> I have an interface that I made private as the interface is module specific. For this example, I created the smallest test code that exhibits the problem.
> 
> I can compile the source but when it links, I get:
> 
>> F:\opt\digitalmars\dmd\bin\..\..\dm\bin\link.exe
>> main,,,user32+kernel32/noi;
>> OPTLINK (R) for Win32  Release 7.50B1
>> Copyright (C) Digital Mars 1989 - 2001  All Rights Reserved
>>
>> main.obj(main)
>>  Error 42: Symbol Undefined _D4main15ConnectionState10checkStateMFZb
>> --- errorlevel 1
> 
> If I remove the private attribute from the interface, it works.
> 
> I am using DMD 1.020. Is this a DMD bug?
> 
> Thanks,
> 
> Myron.

I had the same issue several months ago.  Took me about four days to work out why my code wasn't linking.

I'm pretty sure this is a DMD bug; it's clearly generating a reference to the ConnectionState.checkState function which *doesn't exist*.

That said, I never got around to filing a bug for it since I was swamped at the time.

	-- Daniel