Can someone help me understand why MSVC 12 2013 reports these symbols are unresolved?
Error 239 error LNK2019: unresolved external symbol "public: static double const Wm3::Math<double>::DEG_TO_RAD" (?DEG_TO_RAD@?$Math@N@Wm3@@2NB) referenced in function "protected: void __cdecl Matt::ExternalNavConverter::CExternalNavConverter::DoProcessExternalNav(void)" (? DoProcessExternalNav@CExternalNavConverter@ExternalNavConverter@Matt@@IEAAXXZ) C:\Users\mrussell\workspace\Matt\build-conan-Release\Libraries\MattClient\ExternalNavConverter.lib(ExternalNavConverter.obj) MattClient
The symbol DEG_TO_RAD
is defined in my Wml.dll
file, which I'm quite sure is in my %PATH%
when I start MSVC.
The output from dumpbin
for the DLL is:
dumpbin /exports C:\Users\mrussell\.conan\data\wml\3.x\ntc\stable\package\a4501f33ae09df332b76b4d6f0e5cebffbe83874\bin\Wml3.dll | grep -i DEG_TO_RAD
143 8E 00031A64 ?DEG_TO_RAD@?$Math@M@Wm3@@2MB
144 8F 00031A98 ?DEG_TO_RAD@?$Math@N@Wm3@@2NB
And for the LIB:
dumpbin /exports C:\Users\mrussell\.conan\data\wml\3.x\ntc\stable\package\a4501f33ae09df332b76b4d6f0e5cebffbe83874\lib\Wml3.lib | grep DEG_TO_RAD
?DEG_TO_RAD@?$Math@M@Wm3@@2MB (public: static float const Wm3::Math<float>::DEG_TO_RAD)
?DEG_TO_RAD@?$Math@N@Wm3@@2NB (public: static double const Wm3::Math<double>::DEG_TO_RAD)
I set up a minimal example showing the failed linking here, unfortunately I'm not sure I can put the headers or .lib
file.
I'm not that familiar with dumpbin
, I'm more accustomed to nm
with c++filt
.. But to me, this suggests that the symbol DEG_TO_RAD
is exported in the DLL.
In the Linker command line window, I can see that by bin path (path the to DLL) is provided as a /LIBPATH
, and the full path to the .lib
is provided as well (provided in "Additional Dependencies".)
Could this be because I might be mixing up shared and static libs together? Or a sign that despite me thinking the DLL is in my path, somehow it isn't? Or the symbols in the DLL aren't actually there? (the equivalent of a non-T
for the symbol type in nm
)
I'm going through the list given in this answer, but so far am just confused as to why it is not working.