win32 api & lib issue

Imperatorn johan_forsberg_86 at hotmail.com
Thu Nov 2 10:02:29 UTC 2023


On Thursday, 2 November 2023 at 09:58:21 UTC, Peter Hu wrote:
> On Thursday, 2 November 2023 at 09:13:11 UTC, Imperatorn wrote:
>> On Thursday, 2 November 2023 at 09:08:02 UTC, Imperatorn wrote:
>>> On Thursday, 2 November 2023 at 08:31:41 UTC, Peter Hu wrote:
>>>> Greetings!
>>>>
>>>> From time to time I encountered issues on the subjected 
>>>> after I upgraded my dmd package.Given below code :
>>>>
>>>> [...]
>>>
>>> If it still doesn't work try adding this:
>>>
>>> ```d
>>> pragma(lib, "user32");
>>> pragma(lib, "comdlg32");
>>> ```
>>
>> Another alternative if you're using dub is to add this in your 
>> dub.json instead:
>>
>> ```json
>> "libs": ["user32", "comdlg32"]
>> ```
>>
>> This seems be something related to DMD vs LDC. Because if I 
>> change the compiler to DMD I also get unresolved external 
>> symbols, but not with LDC.
>>
>> It seems the forwarding of directives from submodules are 
>> different.
> Thank you.
>
> Below two pragma solved the isse but am confused as they are 
> already in the system path.This is the first time I have to 
> include lib files here.How come other gui programs don't have 
> to do this.
> pragma(lib,"user32");
> pragma(lib,"comdlg32");

I'm not sure why, it works for me, but I think it could be 
something dmd does different. The pragma lib is inserted into the 
generated object file, or otherwise passed to the linker, so the 
linker automatically links in that library.

I'm guessing dmd for some reason does not see it in the 
submodule, but I have no proof that's the issue, I'm just 
guessing.


More information about the Digitalmars-d-learn mailing list