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
parent 046bb0b881
commit d1f9f11245
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
`const SOMECONST = 0.int; procThatTakesInt32(SOMECONST)` will be illegal now.
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

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``
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
@@ -7363,10 +7366,7 @@ conjunction with the ``exportc`` pragma:
proc exportme(): int {.cdecl, exportc, dynlib.}
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
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.
``--app:lib`` command line option.