manual: documents changes regarding dynlib (#13425)

* manual: documents changes regarding dynlib

Closes #13416

* manual: clean up sentence phrasing
This commit is contained in:
alaviss 2020-02-18 18:44:54 +00:00 • committed by GitHub
commit d1f9f11245
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 5 deletions

View file

@ -32,7 +32,9 @@
- Implicit conversions for `const` behave correctly now, meaning that code like - Implicit conversions for `const` behave correctly now, meaning that code like
`const SOMECONST = 0.int; procThatTakesInt32(SOMECONST)` will be illegal now. `const SOMECONST = 0.int; procThatTakesInt32(SOMECONST)` will be illegal now.
Simply write `const SOMECONST = 0` instead. Simply write `const SOMECONST = 0` instead.
- The `{.dynlib.}` pragma is now required for exporting symbols when making
shared objects on POSIX and macOS, which make it consistent with the behavior
on Windows.
## Library additions ## Library additions

View file

@ -7224,6 +7224,9 @@ The string literal passed to ``exportc`` can be a format string:
In the example the external name of ``p`` is set to ``prefixp``. Only ``$1`` In the example the external name of ``p`` is set to ``prefixp``. Only ``$1``
is available and a literal dollar sign must be written as ``$$``. is available and a literal dollar sign must be written as ``$$``.
If the symbol should also be exported to a dynamic library, the ``dynlib``
pragma should be used in addition to the ``exportc`` pragma. See
`Dynlib pragma for export <#foreign-function-interface-dynlib-pragma-for-export>`_.
Extern pragma Extern pragma
@ -7363,10 +7366,7 @@ conjunction with the ``exportc`` pragma:
proc exportme(): int {.cdecl, exportc, dynlib.} proc exportme(): int {.cdecl, exportc, dynlib.}
This is only useful if the program is compiled as a dynamic library via the This is only useful if the program is compiled as a dynamic library via the
``--app:lib`` command line option. This pragma only has an effect for the code ``--app:lib`` command line option.
generation on the Windows target, so when this pragma is forgotten and the dynamic
library is only tested on Mac and/or Linux, there won't be an error. On Windows
this pragma adds ``__declspec(dllexport)`` to the function declaration.