Real simple unresolved external symbols question...

WhatMeWorry kheaser at gmail.com
Tue Feb 9 19:37:17 UTC 2021


I'm trying to create a super simple dynamic library consisting of 
two files:


  ------------ file2.d ----------------------
extern(D):
     double addEight(double d) { return (d + 8.0); }
	
------------ fileB.d ----------------------
extern(D)
{
     string concatSuffix(string s) { return (s ~ ".ext"); }
}


>dmd -m64 -c file2.d
>dmd -m64 -c fileB.d
creates file2.obj and fileB.obj files

link.exe /DLL /NOENTRY file2.obj fileB.obj msvcrt.lib

fileB.obj : error LNK2019: unresolved external symbol 
_D12TypeInfo_Aya6__initZ referenced in function 
_D5fileB12concatPrefixFAyaZQe
fileB.obj : error LNK2019: unresolved external symbol 
_d_arraycatT referenced in function _D5fileB12concatPrefixFAyaZQe

Ok. I find _d_arraycatT in the D website at:

https://dlang.org/library/rt/lifetime/_d_arraycat_t.html

So I thought, this symbol will be in phobos64.lib.  But when I 
add it to the command, all hell breaks loose:


>link.exe /DLL /NOENTRY file2.obj fileB.obj msvcrt.lib 
>phobos64.lib

phobos64.lib(bits_23fa_21c.obj) : error LNK2001: unresolved 
external symbol memcpy
  o  o  o
file2.dll : fatal error LNK1120: 57 unresolved externals


So I'm stuck and don't have a clue as to how to continue.

I thought Phobos64.lib was self-contained.  Do I need to add 
other libraries?  And how do I know which ones?






More information about the Digitalmars-d-learn mailing list