Right now I am trying to recompile ParaView 5.13 with the LAS reader option turned on, on Windows 11. I have downloaded a Boost library version 1.74 for vc142 and with mt, and I have compiled sources of liblas with the same tools and corresponding options. I already did the same thing with older versions successfully, but now I am stuck with some strange error message when linking \vtkIOLAS-pv5.13.dll
- as follows:
LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc142-mt-x64-1_74.lib'
The failing command is
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1442~1.344\bin\Hostx86\x64\link.exe /nologo VTK\IO\LAS\CMakeFiles\IOLAS.dir\vtkLASReader.cxx.obj /out:bin\vtkIOLAS-pv5.13.dll /implib:lib\vtkIOLAS-pv5.13.lib /pdb:bin\vtkIOLAS-pv5.13.pdb /dll /version:5.13 /machine:x64 /INCREMENTAL:NO lib\vtkFiltersGeneral-pv5.13.lib C:\dev\liblas\rel\install\lib\liblas_c.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_filesystem-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_iostreams-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_program_options-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_system-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_thread-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_serialization-vc142-mt-x64-1_74.lib lib\vtkFiltersCore-pv5.13.lib lib\vtkCommonExecutionModel-pv5.13.lib lib\vtkCommonDataModel-pv5.13.lib lib\vtkCommonMisc-pv5.13.lib lib\vtkCommonTransforms-pv5.13.lib lib\vtkCommonMath-pv5.13.lib lib\vtkkissfft-pv5.13.lib lib\vtkCommonCore-pv5.13.lib lib\vtktoken-pv5.13.lib lib\vtksys-pv5.13.lib ws2_32.lib dbghelp.lib psapi.lib C:\dev\liblas\rel\install\lib\liblas.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_iostreams-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_regex-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_program_options-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_thread-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_chrono-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_date_time-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_atomic-vc142-mt-x64-1_74.lib C:\local\boost_1_74_0\lib64-msvc-14.2\boost_serialization-vc142-mt-x64-1_74.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=2
If I split this command line, simply replacing space chars with \n, this is how it looks like:
C:\PROGRA~1\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1442~1.344\bin\Hostx86\x64\link.exe
/nologo
VTK\IO\LAS\CMakeFiles\IOLAS.dir\vtkLASReader.cxx.obj
/out:bin\vtkIOLAS-pv5.13.dll
/implib:lib\vtkIOLAS-pv5.13.lib
/pdb:bin\vtkIOLAS-pv5.13.pdb
/dll
/version:5.13
/machine:x64
/INCREMENTAL:NO
lib\vtkFiltersGeneral-pv5.13.lib
C:\dev\liblas\rel\install\lib\liblas_c.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_filesystem-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_iostreams-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_program_options-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_system-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_thread-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_serialization-vc142-mt-x64-1_74.lib
lib\vtkFiltersCore-pv5.13.lib
lib\vtkCommonExecutionModel-pv5.13.lib
lib\vtkCommonDataModel-pv5.13.lib
lib\vtkCommonMisc-pv5.13.lib
lib\vtkCommonTransforms-pv5.13.lib
lib\vtkCommonMath-pv5.13.lib
lib\vtkkissfft-pv5.13.lib
lib\vtkCommonCore-pv5.13.lib
lib\vtktoken-pv5.13.lib
lib\vtksys-pv5.13.lib
ws2_32.lib
dbghelp.lib
psapi.lib
C:\dev\liblas\rel\install\lib\liblas.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_iostreams-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_regex-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_program_options-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_thread-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_chrono-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_date_time-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_atomic-vc142-mt-x64-1_74.lib
C:\local\boost_1_74_0\lib64-msvc-14.2\boost_serialization-vc142-mt-x64-1_74.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
/MANIFEST:EMBED,ID=2
So as can be seen, there is indeed a lib file with full path listed as follows - even twice: C:\local\boost_1_74_0\lib64-msvc-14.2\boost_thread-vc142-mt-x64-1_74.lib
, but the little difference is the missing prefix lib...
Actually the binary installation of the boost library includes both variants, with and without the prefix. The CMake configuration finds the version without prefix, and generates the above link command accordingly, while for some reason one of the input files is asking for the variant wants to have the prefix!
Now I am somewhat lost!
Actually I can open vtkLASReader.cxx.obj
with a hex editor and find the libboost_thread...
filename (including the prefix) somewhere inside, so I assume that this object file is “asking” for it, so I would have to somehow “tell” the build process of that object file: “yes, you can get that boost_thread library, but only if you drop that stupid prefix”. But how can I achieve that?