A special treat
Steven Schveighoffer
schveiguy at yahoo.com
Tue Feb 9 13:44:39 PST 2010
On Tue, 09 Feb 2010 16:28:27 -0500, Walter Bright
<newshound1 at digitalmars.com> wrote:
> Steven Schveighoffer wrote:
>> On Tue, 09 Feb 2010 15:58:37 -0500, Walter Bright
>> <newshound1 at digitalmars.com> wrote:
>>
>>> Steve Teale wrote:
>>>> The inability to do this is a real show-stopper for D on Linux, and
>>>> unless things have got better since I last tried, the same can be
>>>> said for Windows DLLs.
>>>
>>> The dmd/samples/d/dserver.d is an example of a Windows DLL in D.
>> According to Don (haven't tried, because I don't have a windows box
>> handy), any D2 DLL will fail, even an empty one because of
>> http://d.puremagic.com/issues/show_bug.cgi?id=3342
>
> It is a bad problem, but it doesn't apply to implicitly loaded DLLs,
> only dynamically loaded ones, and it also doesn't apply to Vista or
> Windows 7.
But implicitly loaded DLLs aren't supported by D! However, I was not
aware that it only applied to dynamically loaded ones, that is good to
know.
>> That aside, having to handle manual steps to ensure the runtime doesn't
>> lose its mind is unacceptable. It has to be handled without any manual
>> runtime coding to be a viable solution. DDL is not a solution, its a
>> hack.
>> In other words, I should be able to flip a compiler switch to build a
>> shared lib, and I shouldn't have to do anything special aside from
>> exporting symbols. This is the way it is in all other programming
>> languages.
>> Until Phobos is a shared lib, I don't think we need to have any
>> discussions about any existing solutions. That is requirement number 1
>> for saying D supports shared libs.
>
> Shared libraries (on Linux) and Windows DLLs are very different things.
Yes, I agree they are two different problems to solve. But to a
developer, they look the same.
> Phobos as a DLL is a different problem than creating DLLs with D. DLLs
> in D can be created that are statically linked with Phobos, and that can
> be accessed by any executable in any language.
They can be accessed by another D program? My understanding is that all
kinds of weird problems happen if you dynamically link two D programs
together. I'm not speaking from first-hand experience, I may be wrong.
It is very important that Phobos be a dynamic library and that you can
build dynamic libraries easily without manual manipulation of the
runtime. If these two things are accomplished, then D can say it supports
dynamic libraries, not before. Half ass support doesn't count. It's like
saying a car has a cup holder because you can wedge your cup between the
seat and the e-brake.
-Steve
More information about the Digitalmars-d
mailing list