First Draft: Symbol Representation (Export)
Tim
tim.dlang at t-online.de
Fri Mar 8 16:49:52 UTC 2024
On Thursday, 29 February 2024 at 11:15:07 UTC, Richard (Rikki)
Andrew Cattermole wrote:
> D's support for shared libraries has historically presented
> challenges for users, especially when dealing with complex use
> cases. This proposal aims to improve the user experience by
> establishing a user story that will provide a consistent and
> user-friendly approach to usage and compilation of binaries
> without a thorough understanding of linkers.
>
> With the recent resolution of dmd's exportation support on
> Windows (druntime support is still under development), we are
> now ready to focus on making D's shared library capabilities
> more accessible and usable for common use cases.
>
> Links:
> [current](https://gist.githubusercontent.com/rikkimax/1d7cfdb8ed74e9e4efc9ba0208f42e7e/11e36e8a332324c5323792da2835337d0306a6c9) [latest](https://gist.github.com/rikkimax/1d7cfdb8ed74e9e4efc9ba0208f42e7e)
Can a module, which is compiled as part of the application, still
contain prototypes for symbols from a DLL? Here is an example:
```D
extern(C++) void foo(const char *s, size_t length);
void foo(string s)
{
foo(s.ptr, s.length);
}
```
Function `foo` is implemented in a C++ library, which could be
compiled as a DLL. The module contains a prototype for the
function, but also an overload with a more convenient interface
for D. The module needs to be compiled, because it contains the
overload. Can the prototype still be imported from a DLL and be
part of the same module?
More information about the dip.development
mailing list