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