Xmake Version
3.0.7
Operating System Version and Architecture
Windows 10 22H2 19045
Describe Bug
Basic project with Dlang toolset (to use LDC) and dub package dependency fails with linker error:
error: Error: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\HostX64\x64\link.exe failed with status: 1104
When I try to run the link command from verbose log manually in project dir, it shows better error:
> C:\tools\ldc\bin\ldc2.exe -m64 -L-libpath:C:\Users\redacted\AppData\Local\dub\packages\onetricks-d\0.0.2\onetricks-d -Lonetricks-d.lib -ofbuild\windows\x64\release\xmake-test.exe build\.objs\xmake-test\windows\x64\release\src\main.d.obj
LINK : fatal error LNK1104: cannot open file 'ibpath:C:\Users\redacted\AppData\Local\dub\packages\onetricks-d\0.0.2\onetricks-d.lib'
Error: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\HostX64\x64\link.exe failed with status: 1104
As you can see, -L-libpath argument is broken. Using slash flags according to link help (-L/libpath:...) works. Same project with dub doesn't invoke link at all, it seems, and uses internal LDC linking:
ldc2 -of<...>\dub-test.exe <...>\dub-test.obj <...>\onetricks-d.lib -mscrtlib=msvcrt
Expected Behavior
Successful compilation and linking
Project Configuration
add_rules("mode.debug", "mode.release")
add_requires(
"dub::onetricks-d ~0.0.2"
)
target("xmake-test")
set_kind("binary")
set_toolchains("dlang")
add_packages("dub::onetricks-d")
add_files("src/*.d")
Additional Information and Error Logs
> xmake f -cvD
checking for platform ... windows
checking for architecture ... x64
checking for cl.exe ... C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\HostX64\x64\cl.exe
checking for Microsoft C/C++ Compiler (x64) ... ok
checking for Microsoft Visual Studio (x64) version ... 2026
checkinfo: cannot runv(nim.exe --version), No such file or directory
checking for nim ... no
checking for git ... C:\Program Files\Git\cmd\git.exe
checkinfo: cannot runv(gzip.exe --version), No such file or directory
checking for gzip ... no
checking for 7z ... C:\tools\xmake\winenv\bin\7z
finding onetricks-d from dub ..
checking for dub ... C:\tools\ldc\bin\dub.exe
checking for dub::onetricks-d ... onetricks-d ~0.0.2
checkinfo: cannot runv(dmd.exe --version), No such file or directory
checking for dmd ... no
checking for ldc2 ... C:\tools\ldc\bin\ldc2.exe
configure
{
plat = windows
vs = 2026
arch = x64
ccache = true
mode = release
host = windows
builddir = build
kind = static
ndk_stdcxx = true
clean = true
}
> xmake -vD
checking for ldc2 ... C:\tools\ldc\bin\ldc2.exe
checking for the dlang compiler (dc) ... ldc2.exe
checking for C:\tools\ldc\bin\ldc2.exe ... c:\tools\ldc\bin\ldc2.exe
checking for flags (--O3 --release --boundscheck=off) ... ok
> ldc2.exe "--O3" "--release" "--boundscheck=off" "-m64"
checking for ldc2 ... C:\tools\ldc\bin\ldc2.exe
checking for the dlang linker (dcld) ... ldc2.exe
[ 47%]: linking.release xmake-test.exe
C:\tools\ldc\bin\ldc2.exe -m64 -L-libpath:C:\Users\redacted\AppData\Local\dub\packages\onetricks-d\0.0.2\onetricks-d -Lonetricks-d.lib -ofbuild\windows\x64\release\xmake-test.exe build\.objs\xmake-test\windows\x64\release\src\main.d.obj
error: @programdir\core\main.lua:274: @programdir\actions\build\main.lua:161: @programdir\modules\async\runjobs.lua:261: @programdir\modules\private\action\build\link_objects.lua:59: @programdir\core\sandbox\modules\os.lua:273: Error: C:\Program Files\Microsoft Visual Studio\18\Community\VC\Tools\MSVC\14.50.35717\bin\HostX64\x64\link.exe failed with status: 1104
stack traceback:
[C]: in function 'error'
[@programdir\core\base\os.lua:1129]:
[@programdir\core\sandbox\modules\os.lua:273]: in function 'runv'
[@programdir\modules\core\tools\dmd.lua:197]:
[C]: in function 'xpcall'
[@programdir\core\base\utils.lua:258]:
[@programdir\core\tool\linker.lua:234]: in function 'link'
[@programdir\modules\private\action\build\link_objects.lua:59]: in function 'callback'
[@programdir\modules\core\project\depend.lua:227]: in function 'on_changed'
[@programdir\modules\private\action\build\link_objects.lua:39]: in function '_do_link_target'
[@programdir\modules\private\action\build\link_objects.lua:73]: in function 'job_func'
[@programdir\modules\async\runjobs.lua:441]:
[C]: in function 'xpcall'
[@programdir\core\base\utils.lua:258]: in function 'trycall'
[@programdir\core\sandbox\modules\try.lua:117]: in function 'try'
[@programdir\modules\async\runjobs.lua:410]: in function 'cotask'
[@programdir\core\base\scheduler.lua:514]:
stack traceback:
[C]: in function 'error'
@programdir\core\base\os.lua:1129: in function 'os.raiselevel'
(...tail calls...)
@programdir\core\main.lua:274: in upvalue 'cotask'
@programdir\core\base\scheduler.lua:514: in function <@programdir\core\base\scheduler.lua:507>
Xmake Version
3.0.7
Operating System Version and Architecture
Windows 10 22H2 19045
Describe Bug
Basic project with Dlang toolset (to use LDC) and dub package dependency fails with linker error:
When I try to run the link command from verbose log manually in project dir, it shows better error:
As you can see,
-L-libpathargument is broken. Using slash flags according tolinkhelp (-L/libpath:...) works. Same project withdubdoesn't invokelinkat all, it seems, and uses internal LDC linking:ldc2 -of<...>\dub-test.exe <...>\dub-test.obj <...>\onetricks-d.lib -mscrtlib=msvcrtExpected Behavior
Successful compilation and linking
Project Configuration
Additional Information and Error Logs