www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Issues with undefined symbols when using Vibe on Windows

reply Chris M. <chrismohrfeld comcast.net> writes:
This doesn't appear to specifically be a Vibe issue, just 
noticing this error when I use eventcore from it (trying to use 
async).

C:\dmd2\windows\bin\lld-link.exe: warning: 
eventcore.lib(sockets_101f_952.obj): undefined symbol: 
SetWindowLongPtrA
C:\dmd2\windows\bin\lld-link.exe: warning: 
eventcore.lib(sockets_101f_952.obj): undefined symbol: 
GetWindowLongPtrA

I'm using DMD 2.080 from the zip file provided on the downloads 
page, plus DMC (unfortunately acquiring a Visual Studio license 
would not be easy at my workplace, and I don't see how to use the 
provided DMD installer without it). As far as I can tell, this 
issue seems to be happening because user32.lib from the 
windows/lib64/mingw folder does not define these two functions. 
Seems to work when I build the project as 32-bit though. 
Wondering if someone could double-check my reasoning here.
Jun 29 2018
next sibling parent reply Timoses <timosesu gmail.com> writes:
On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 This doesn't appear to specifically be a Vibe issue, just 
 noticing this error when I use eventcore from it (trying to use 
 async).

 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 SetWindowLongPtrA
 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 GetWindowLongPtrA

 I'm using DMD 2.080 from the zip file provided on the downloads 
 page, plus DMC (unfortunately acquiring a Visual Studio license 
 would not be easy at my workplace, and I don't see how to use 
 the provided DMD installer without it). As far as I can tell, 
 this issue seems to be happening because user32.lib from the 
 windows/lib64/mingw folder does not define these two functions. 
 Seems to work when I build the project as 32-bit though. 
 Wondering if someone could double-check my reasoning here.
Did you see this? https://github.com/vibe-d/vibe.d#note-for-building-on-win64 Perhaps it could be that?
Jun 29 2018
next sibling parent bauss <jj_1337 live.dk> writes:
On Friday, 29 June 2018 at 19:53:04 UTC, Timoses wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 This doesn't appear to specifically be a Vibe issue, just 
 noticing this error when I use eventcore from it (trying to 
 use async).

 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 SetWindowLongPtrA
 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 GetWindowLongPtrA

 I'm using DMD 2.080 from the zip file provided on the 
 downloads page, plus DMC (unfortunately acquiring a Visual 
 Studio license would not be easy at my workplace, and I don't 
 see how to use the provided DMD installer without it). As far 
 as I can tell, this issue seems to be happening because 
 user32.lib from the windows/lib64/mingw folder does not define 
 these two functions. Seems to work when I build the project as 
 32-bit though. Wondering if someone could double-check my 
 reasoning here.
Did you see this? https://github.com/vibe-d/vibe.d#note-for-building-on-win64 Perhaps it could be that?
Vibe builds fine on 64bit for me and I think that's outdated. It hasn't been modified for 4 years. https://github.com/vibe-d/vibe.d/blame/master/README.md#L130
Jun 29 2018
prev sibling parent Chris M. <chrismohrfeld comcast.net> writes:
On Friday, 29 June 2018 at 19:53:04 UTC, Timoses wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 This doesn't appear to specifically be a Vibe issue, just 
 noticing this error when I use eventcore from it (trying to 
 use async).

 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 SetWindowLongPtrA
 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 GetWindowLongPtrA

 I'm using DMD 2.080 from the zip file provided on the 
 downloads page, plus DMC (unfortunately acquiring a Visual 
 Studio license would not be easy at my workplace, and I don't 
 see how to use the provided DMD installer without it). As far 
 as I can tell, this issue seems to be happening because 
 user32.lib from the windows/lib64/mingw folder does not define 
 these two functions. Seems to work when I build the project as 
 32-bit though. Wondering if someone could double-check my 
 reasoning here.
Did you see this? https://github.com/vibe-d/vibe.d#note-for-building-on-win64 Perhaps it could be that?
Unfortunately made it worse C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(win32_13b7_601.obj): undefined symbol: SetWindowLongPtrA C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(win32_13b7_601.obj): undefined symbol: GetWindowLongPtrA C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: open C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: chmod C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: lseek C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: close C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: read C:\dmd2\windows\bin\lld-link.exe: warning: vibe-d_core.lib(threadedfile_1361_70d.obj): undefined symbol: write
Jun 29 2018
prev sibling parent reply bauss <jj_1337 live.dk> writes:
On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 This doesn't appear to specifically be a Vibe issue, just 
 noticing this error when I use eventcore from it (trying to use 
 async).

 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 SetWindowLongPtrA
 C:\dmd2\windows\bin\lld-link.exe: warning: 
 eventcore.lib(sockets_101f_952.obj): undefined symbol: 
 GetWindowLongPtrA

 I'm using DMD 2.080 from the zip file provided on the downloads 
 page, plus DMC (unfortunately acquiring a Visual Studio license 
 would not be easy at my workplace, and I don't see how to use 
 the provided DMD installer without it). As far as I can tell, 
 this issue seems to be happening because user32.lib from the 
 windows/lib64/mingw folder does not define these two functions. 
 Seems to work when I build the project as 32-bit though. 
 Wondering if someone could double-check my reasoning here.
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Jun 29 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Friday, 29 June 2018 at 19:53:27 UTC, bauss wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 [...]
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Yeah, that's what I'm targeting
 Vibe builds fine on 64bit for me and I think that's outdated. 
 It hasn't been modified for 4 years.
Seems to be an issue when I import vibe.core.concurrency
Jun 29 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Friday, 29 June 2018 at 20:08:49 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 19:53:27 UTC, bauss wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 [...]
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Yeah, that's what I'm targeting
 Vibe builds fine on 64bit for me and I think that's outdated. 
 It hasn't been modified for 4 years.
Seems to be an issue when I import vibe.core.concurrency
Bumping this one back up
Jul 02 2018
parent reply Bauss <jj_1337 live.dk> writes:
On Monday, 2 July 2018 at 12:53:19 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 20:08:49 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 19:53:27 UTC, bauss wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 [...]
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Yeah, that's what I'm targeting
 Vibe builds fine on 64bit for me and I think that's outdated. 
 It hasn't been modified for 4 years.
Seems to be an issue when I import vibe.core.concurrency
Bumping this one back up
If I don't get around it tonight then I will tomorrow and see if I can find a solution for you or perhaps figure out what exactly goes wrong. Kinda half important for me too to fix something like this since I have a framework relying on vibe.d
Jul 02 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 On Monday, 2 July 2018 at 12:53:19 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 20:08:49 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 19:53:27 UTC, bauss wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 [...]
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Yeah, that's what I'm targeting
 Vibe builds fine on 64bit for me and I think that's 
 outdated. It hasn't been modified for 4 years.
Seems to be an issue when I import vibe.core.concurrency
Bumping this one back up
If I don't get around it tonight then I will tomorrow and see if I can find a solution for you or perhaps figure out what exactly goes wrong. Kinda half important for me too to fix something like this since I have a framework relying on vibe.d
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
Jul 02 2018
parent reply Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Monday, July 02, 2018 18:26:27 Chris M. via Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 On Monday, 2 July 2018 at 12:53:19 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 20:08:49 UTC, Chris M. wrote:
 On Friday, 29 June 2018 at 19:53:27 UTC, bauss wrote:
 On Friday, 29 June 2018 at 19:25:42 UTC, Chris M. wrote:
 [...]
Are you compiling to 64bit? Else the functions will be named GetClassLongA and SetClassLongA
Yeah, that's what I'm targeting
 Vibe builds fine on 64bit for me and I think that's
 outdated. It hasn't been modified for 4 years.
Seems to be an issue when I import vibe.core.concurrency
Bumping this one back up
If I don't get around it tonight then I will tomorrow and see if I can find a solution for you or perhaps figure out what exactly goes wrong. Kinda half important for me too to fix something like this since I have a framework relying on vibe.d
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
How are you compiling for 64-bit without the MS toolchain? - Jonathan M Davis
Jul 02 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis wrote:
 On Monday, July 02, 2018 18:26:27 Chris M. via 
 Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 On Monday, 2 July 2018 at 12:53:19 UTC, Chris M. wrote:
 [...]
If I don't get around it tonight then I will tomorrow and see if I can find a solution for you or perhaps figure out what exactly goes wrong. Kinda half important for me too to fix something like this since I have a framework relying on vibe.d
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
How are you compiling for 64-bit without the MS toolchain? - Jonathan M Davis
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
Jul 02 2018
parent reply Seb <seb wilzba.ch> writes:
On Monday, 2 July 2018 at 19:24:38 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis wrote:
 On Monday, July 02, 2018 18:26:27 Chris M. via 
 Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 [...]
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
How are you compiling for 64-bit without the MS toolchain? - Jonathan M Davis
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
I thought for 64-bit the bundled lld linker and mingw runtime are used? https://dlang.org/changelog/2.079.0.html#lld_mingw So in fact you shouldn't even need DMC?
Jul 02 2018
next sibling parent Jonathan M Davis <newsgroup.d jmdavisprog.com> writes:
On Monday, July 02, 2018 21:20:26 Seb via Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 19:24:38 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis wrote:
 On Monday, July 02, 2018 18:26:27 Chris M. via

 Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 [...]
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
How are you compiling for 64-bit without the MS toolchain? - Jonathan M Davis
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
I thought for 64-bit the bundled lld linker and mingw runtime are used? https://dlang.org/changelog/2.079.0.html#lld_mingw So in fact you shouldn't even need DMC?
Well, that's a nice improvement. I didn't realize that that was the case now (though I rarely do anything with Windows). - Jonathan M Davis
Jul 02 2018
prev sibling parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Monday, 2 July 2018 at 21:20:26 UTC, Seb wrote:
 On Monday, 2 July 2018 at 19:24:38 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis wrote:
 On Monday, July 02, 2018 18:26:27 Chris M. via 
 Digitalmars-d-learn wrote:
 On Monday, 2 July 2018 at 17:33:20 UTC, Bauss wrote:
 [...]
Thanks for checking, I have no idea what else to try (short of getting MS Build Tools somehow, but I unfortunately can't in my current environment so I'm stuck with DMC + DMD)
How are you compiling for 64-bit without the MS toolchain? - Jonathan M Davis
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
I thought for 64-bit the bundled lld linker and mingw runtime are used? https://dlang.org/changelog/2.079.0.html#lld_mingw So in fact you shouldn't even need DMC?
Ah, okay. I'm mostly on Linux so I generally miss anything Windows-related. I was using the following link and figured I'd install DMC as well. https://dlang.org/dmd-windows.html#requirements
Jul 02 2018
next sibling parent Mike Parker <aldacron gmail.com> writes:
On Monday, 2 July 2018 at 23:00:08 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 21:20:26 UTC, Seb wrote:
 I thought for 64-bit the bundled lld linker and mingw runtime 
 are used?
 https://dlang.org/changelog/2.079.0.html#lld_mingw
 So in fact you shouldn't even need DMC?
Ah, okay. I'm mostly on Linux so I generally miss anything Windows-related. I was using the following link and figured I'd install DMC as well.
So your linker errors show that you're using lld anyway. I'm on my Linux laptop at a Starbucks atm, but I'm pretty sure that the Windows distribution does not ship with any system libraries that are compatible with lld. It only ships with a small set of OMF link libraries that Walter got permission to distribute a couple decades ago and that only work with the DM linker. So anything that relies on the Windows APIs is not going to build without something to link to. You'll probably have no choice but to install the build tools.
Jul 02 2018
prev sibling parent reply Seb <seb wilzba.ch> writes:
On Monday, 2 July 2018 at 23:00:08 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 21:20:26 UTC, Seb wrote:
 On Monday, 2 July 2018 at 19:24:38 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis 
 wrote:
 [...]
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
I thought for 64-bit the bundled lld linker and mingw runtime are used? https://dlang.org/changelog/2.079.0.html#lld_mingw So in fact you shouldn't even need DMC?
Ah, okay. I'm mostly on Linux so I generally miss anything Windows-related. I was using the following link and figured I'd install DMC as well. https://dlang.org/dmd-windows.html#requirements
BTW have you tried using LDC? They might ship a newer version of LLD.
Jul 02 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Tuesday, 3 July 2018 at 05:36:12 UTC, Seb wrote:
 On Monday, 2 July 2018 at 23:00:08 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 21:20:26 UTC, Seb wrote:
 On Monday, 2 July 2018 at 19:24:38 UTC, Chris M. wrote:
 On Monday, 2 July 2018 at 18:48:16 UTC, Jonathan M Davis 
 wrote:
 [...]
Downloaded the DMD and DMC zip files, extracted and added to PATH. Been working for the most part so far.
I thought for 64-bit the bundled lld linker and mingw runtime are used? https://dlang.org/changelog/2.079.0.html#lld_mingw So in fact you shouldn't even need DMC?
Ah, okay. I'm mostly on Linux so I generally miss anything Windows-related. I was using the following link and figured I'd install DMC as well. https://dlang.org/dmd-windows.html#requirements
BTW have you tried using LDC? They might ship a newer version of LLD.
After hashing it out with some people on the Discord, I'm fairly certain we narrowed it down to the 64-bit user32.lib from mingw missing these functions. https://issues.dlang.org/show_bug.cgi?id=19051
Jul 03 2018
parent reply Mike Parker <aldacron gmail.com> writes:
On Tuesday, 3 July 2018 at 13:32:21 UTC, Chris M. wrote:

 After hashing it out with some people on the Discord, I'm 
 fairly certain we narrowed it down to the 64-bit user32.lib 
 from mingw missing these functions.

 https://issues.dlang.org/show_bug.cgi?id=19051
So are the mingw libs only shipped in the zip file? I don't have them with the installer version of 2.080.0, nor lld for that matter. But I see them in the zip for the 2.081.0 RC.
Jul 03 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Tuesday, 3 July 2018 at 14:38:53 UTC, Mike Parker wrote:
 On Tuesday, 3 July 2018 at 13:32:21 UTC, Chris M. wrote:

 After hashing it out with some people on the Discord, I'm 
 fairly certain we narrowed it down to the 64-bit user32.lib 
 from mingw missing these functions.

 https://issues.dlang.org/show_bug.cgi?id=19051
So are the mingw libs only shipped in the zip file? I don't have them with the installer version of 2.080.0, nor lld for that matter. But I see them in the zip for the 2.081.0 RC.
Seems to be an option in the 2.080.1 installer (which I ignored before since I wasn't entirely sure how things worked on Windows), not sure about previous versions though.
Jul 03 2018
parent reply Seb <seb wilzba.ch> writes:
On Tuesday, 3 July 2018 at 15:10:34 UTC, Chris M. wrote:
 On Tuesday, 3 July 2018 at 14:38:53 UTC, Mike Parker wrote:
 On Tuesday, 3 July 2018 at 13:32:21 UTC, Chris M. wrote:

 After hashing it out with some people on the Discord, I'm 
 fairly certain we narrowed it down to the 64-bit user32.lib 
 from mingw missing these functions.

 https://issues.dlang.org/show_bug.cgi?id=19051
So are the mingw libs only shipped in the zip file? I don't have them with the installer version of 2.080.0, nor lld for that matter. But I see them in the zip for the 2.081.0 RC.
Seems to be an option in the 2.080.1 installer (which I ignored before since I wasn't entirely sure how things worked on Windows), not sure about previous versions though.
BTW in case someone has a bit of time to look at the MinGW headers. They are built as part of the `build-mingw-libs` branch at the installer repo: https://github.com/dlang/installer/blob/build-mingw-libs/windows/build_mingw.bat This is automated via AppVeyor: https://github.com/dlang/installer/blob/build-mingw-libs/appveyor.yml And it's added to the zip here: https://github.com/dlang/installer/blob/master/create_dmd_release/build_all.d#L505 I think the installer detects whether Visual Studio is installed or nor, but I'm not sure on this (I don't use Windows).
Jul 03 2018
next sibling parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Tuesday, 3 July 2018 at 17:54:08 UTC, Seb wrote:
 On Tuesday, 3 July 2018 at 15:10:34 UTC, Chris M. wrote:
 On Tuesday, 3 July 2018 at 14:38:53 UTC, Mike Parker wrote:
 On Tuesday, 3 July 2018 at 13:32:21 UTC, Chris M. wrote:

 After hashing it out with some people on the Discord, I'm 
 fairly certain we narrowed it down to the 64-bit user32.lib 
 from mingw missing these functions.

 https://issues.dlang.org/show_bug.cgi?id=19051
So are the mingw libs only shipped in the zip file? I don't have them with the installer version of 2.080.0, nor lld for that matter. But I see them in the zip for the 2.081.0 RC.
Seems to be an option in the 2.080.1 installer (which I ignored before since I wasn't entirely sure how things worked on Windows), not sure about previous versions though.
BTW in case someone has a bit of time to look at the MinGW headers. They are built as part of the `build-mingw-libs` branch at the installer repo: https://github.com/dlang/installer/blob/build-mingw-libs/windows/build_mingw.bat This is automated via AppVeyor: https://github.com/dlang/installer/blob/build-mingw-libs/appveyor.yml And it's added to the zip here: https://github.com/dlang/installer/blob/master/create_dmd_release/build_all.d#L505 I think the installer detects whether Visual Studio is installed or nor, but I'm not sure on this (I don't use Windows).
https://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-5.0.2/ Looks like there's a user32.def file in the src package that does not have these two functions defined. Not too sure how this vcvars64.bat file builds the 64-bit libraries from this, but I think I'll have to open a ticket with the mingw devs to have them be added (or see if they have a good explanation).
Jul 03 2018
next sibling parent Chris M. <chrismohrfeld comcast.net> writes:
On Tuesday, 3 July 2018 at 18:24:47 UTC, Chris M. wrote:
 On Tuesday, 3 July 2018 at 17:54:08 UTC, Seb wrote:
 [...]
https://sourceforge.net/projects/mingw/files/MinGW/Base/w32api/w32api-5.0.2/ Looks like there's a user32.def file in the src package that does not have these two functions defined. Not too sure how this vcvars64.bat file builds the 64-bit libraries from this, but I think I'll have to open a ticket with the mingw devs to have them be added (or see if they have a good explanation).
Sorry, looks buildsdk.d does the actual building, not vcvars64.bat
Jul 03 2018
prev sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
On 04/07/2018 6:24 AM, Chris M. wrote:
 Looks like there's a user32.def file in the src package that does not 
 have these two functions defined. Not too sure how this vcvars64.bat 
 file builds the 64-bit libraries from this, but I think I'll have to 
 open a ticket with the mingw devs to have them be added (or see if they 
 have a good explanation).
Those files are for 32bit only. See[0] for 64bit versions under the directory mingw-w64-crt/lib64. [0] https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/mingw-w64-v5.0.4.zip/download
Jul 03 2018
prev sibling parent reply kinke <noone nowhere.com> writes:
On Tuesday, 3 July 2018 at 17:54:08 UTC, Seb wrote:
 BTW in case someone has a bit of time to look at the MinGW 
 headers. They are built as part of the `build-mingw-libs` 
 branch at the installer repo:

 https://github.com/dlang/installer/blob/build-mingw-libs/windows/build_mingw.bat

 This is automated via AppVeyor:

 https://github.com/dlang/installer/blob/build-mingw-libs/appveyor.yml

 And it's added to the zip here:

 https://github.com/dlang/installer/blob/master/create_dmd_release/build_all.d#L505

 I think the installer detects whether Visual Studio is 
 installed or nor, but I'm not sure on this (I don't use 
 Windows).
AFAICT, the issue is that MinGW is used, as opposed to MinGW-w64 (a confusingly separate project unfortunately AFAIK). There's no SetWindowLongPtr for Win32, it's #defined as SetWindowLong. The 64-bit user32.def of MinGW-w64 contains it [1], while it's missing in the MinGW .def file [3] and the 32-bit MinGW-w64 one [2]. [1] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib64/user32.def [2] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib32/user32.def [3] https://sourceforge.net/p/mingw/mingw-org-wsl/ci/5.0-active/tree/w32api/lib/user32.def
Jul 03 2018
parent reply Chris M. <chrismohrfeld comcast.net> writes:
On Tuesday, 3 July 2018 at 18:35:43 UTC, kinke wrote:
 On Tuesday, 3 July 2018 at 17:54:08 UTC, Seb wrote:
 [...]
AFAICT, the issue is that MinGW is used, as opposed to MinGW-w64 (a confusingly separate project unfortunately AFAIK). There's no SetWindowLongPtr for Win32, it's #defined as SetWindowLong. The 64-bit user32.def of MinGW-w64 contains it [1], while it's missing in the MinGW .def file [3] and the 32-bit MinGW-w64 one [2]. [1] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib64/user32.def [2] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib32/user32.def [3] https://sourceforge.net/p/mingw/mingw-org-wsl/ci/5.0-active/tree/w32api/lib/user32.def
What are next steps then?
Jul 04 2018
parent kinke <noone nowhere.com> writes:
On Wednesday, 4 July 2018 at 20:36:55 UTC, Chris M. wrote:
 On Tuesday, 3 July 2018 at 18:35:43 UTC, kinke wrote:
 On Tuesday, 3 July 2018 at 17:54:08 UTC, Seb wrote:
 [...]
AFAICT, the issue is that MinGW is used, as opposed to MinGW-w64 (a confusingly separate project unfortunately AFAIK). There's no SetWindowLongPtr for Win32, it's #defined as SetWindowLong. The 64-bit user32.def of MinGW-w64 contains it [1], while it's missing in the MinGW .def file [3] and the 32-bit MinGW-w64 one [2]. [1] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib64/user32.def [2] https://sourceforge.net/p/mingw-w64/code/HEAD/tree/trunk/mingw-w64-crt/lib32/user32.def [3] https://sourceforge.net/p/mingw/mingw-org-wsl/ci/5.0-active/tree/w32api/lib/user32.def
What are next steps then?
Probably something along the lines of 1) cloning the repo 2) preparing the environment so that build_mingw.bat works locally 3) downloading MinGW-w64 archive in build_mingw.bat 4) adapting paths in buildsdk.d 5) fix until working 6) check if other scripts need to be adapted too (packaging etc.) 7) open GitHub PR
Jul 04 2018