Dll support: testers needed
Benjamin Thaut
code at benjamin-thaut.de
Thu Jan 11 18:56:23 UTC 2018
Am 11.01.2018 um 05:10 schrieb Domain:
> I restart my computer, and it can produce dll now. But when I compile exe:
> dmd -m64 -useshared app.d -ofapp.exe
>
> app.obj : error LNK2019: 无法解析的外部符号
> _D3std12experimental6logger4core17stdThreadLocalLogFNdNfZCQCeQCdQBsQBo6Logger,
> 该符号在函数
> _D3std12experimental6logger4core__T18defaultLogFunctionVEQCdQCcQBrQBn8LogLeveli64Z__TQByVii9VAyaa5_6170702e64VQra8_6170702e6d61696eVQBna15_766f6964206170702e6d61696e2829VQCza3_617070TQDmZQFwFNfLQDxZv
> 中被引用
As I said in the first post, I'm not interrested in linker errors due to
missing 'export' annotation. std.experimental.logger does not have an
export annotations and therefor will cause linker errors. If you
absolutely must use std.experimental.logger you will have to annotate it
with 'export' and recompile phobos. The idea behind my initial PR is to
build in basic support for dlls, not to fully annotate all of phobos
with 'export'.
>
> dmd -m64 app.d -ofapp.exe
> dmd -m64 -shared dll1.d -ofdll1.dll
> dmd -m64 -shared dll2.d -ofdll2.dll
Your command line is wrong. You are missing the -useshared option and
therefore your dlls / executable don't share the same version of druntime.
>
> output:
>
> 2018-01-11T12:04:51.635:app.d:main:9 Loading dll1.dll
> 2018-01-11T12:04:51.894:dll1.d:start:22 dll1 starting
> MyLogger: dll1 started
> 2018-01-11T12:04:51.897:app.d:main:14 Loading dll2.dll
> 2018-01-11T12:04:52.164:dll2.d:start:9 dll2 started
How can you get the output of your program if it fails to link?
--
Kind Regards
Benjamin Thaut
More information about the Digitalmars-d
mailing list