Linker errors to Windows functions

Dennis dkorpel at gmail.com
Tue Aug 20 17:29:15 UTC 2019


On Tuesday, 20 August 2019 at 17:17:01 UTC, Vladimirs Nordholm 
wrote:
> In code I have `import core.sys.windows.winuser;`, but still 
> get this error.

Importing only specifies that you expect the symbols to be there, 
it doesn't mean the functions are linked in.

On Windows there are three targets, 32-bit OMF (old dmd default), 
32-bit MSCoff and 64-bit MSCoff (dub defaults to MSCoff since not 
too long ago). While DMD ships with import libraries for all 
targets, I never know which ones get linked in by default and 
which ones don't.

Usually when I get Windows linking errors I either switch the 
target (the OMF import libraries are sometimes lacking, so then I 
compile with --arch=x86_mscoff or --arch=x86_64) or explicitly 
link the import libraries.
Just quickly Google a function like GetSystemMetrics:
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getsystemmetrics
On the bottom it says "Library: User32.lib" so I add `pragma(lib, 
"User32.lib");` to my module using it.



More information about the Digitalmars-d-learn mailing list