Hello Blender community,
I need your help to build Blender as a Python module. I did successfully build it (version 3.2.1 + Cuda) once before, but now it does not work anymore (tried various versions from 3.2.1 to 3.3.0 with or without Cuda). I also tried from a fresh clone of the git repository just to be sure it was not something left by a previous build that was messing.
I am trying to build on Windows 11, using Visual Studio community 2019.
The first issue I encountered was about the openjpeg library :
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(125,1): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(128): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(128,1): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(102,1): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(106): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\lib\win64_vc15\tbb\include\tbb/parallel_sort.h(106,1): warning C4180: qualificateur appliqué au type fonction n'a pas de sens ; ignoré [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\gpencil_modifiers\bf_gpencil_modifiers.vcxproj]
C:\Projects\Blender-build\blender\source\blender\imbuf\intern\jp2.c(19,10): fatal error C1083: Impossible d'ouvrir le fichier include : 'openjpeg.h' : No such file or directory [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\blender\imbuf\bf_imbuf.vcxproj]
6 Avertissement(s)
1 Erreur(s)
When I opened the generated project in VS, I realised that one module was looking for openjpeg 2.3 while the one downloaded in the lib folder was 2.5. I manually downloaded the 2.3 version and added it in the lib folder and could go further in the build (but is it safe to have multiple versions of the same lib in a project ?).
But now I am stuck with another error, at the very end of the build, while generating the python library, I get an linkage error bout Open Shading Language :
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "float __cdecl OSL_v1_12::pvt::simplexnoise1(float,int,float *)" (?simplexnoise1@pvt@OSL_v1_12@@YAMMHPEAM@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::`anonymous namespace'::SimplexNoise::operator()(class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,int)const " (??RSimplexNoise@?A0xf6e9fd35@pvt@OSL_v1_12@@QEBAXAEAV?$Dual@M$01@3@AEBV43@H@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "float __cdecl OSL_v1_12::pvt::simplexnoise2(float,float,int,float *,float *)" (?simplexnoise2@pvt@OSL_v1_12@@YAMMMHPEAM0@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::`anonymous namespace'::SimplexNoise::operator()(class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,int)const " (??RSimplexNoise@?A0xf6e9fd35@pvt@OSL_v1_12@@QEBAXAEAV?$Dual@M$01@3@AEBV43@1H@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "float __cdecl OSL_v1_12::pvt::simplexnoise3(float,float,float,int,float *,float *,float *)" (?simplexnoise3@pvt@OSL_v1_12@@YAMMMMHPEAM00@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::`anonymous namespace'::SimplexNoise::operator()(class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,int)const " (??RSimplexNoise@?A0xf6e9fd35@pvt@OSL_v1_12@@QEBAXAEAV?$Dual@M$01@3@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@3@H@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "float __cdecl OSL_v1_12::pvt::simplexnoise4(float,float,float,float,int,float *,float *,float *,float *)" (?simplexnoise4@pvt@OSL_v1_12@@YAMMMMMHPEAM000@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::`anonymous namespace'::SimplexNoise::operator()(class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class OSL_v1_12::Dual<float,2> const &,int)const " (??RSimplexNoise@?A0xf6e9fd35@pvt@OSL_v1_12@@QEBAXAEAV?$Dual@M$01@3@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@3@AEBV43@H@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::gabor(class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV52@PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::gabor(class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV32@0PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV52@2PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::gabor(class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV32@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GenericNoise::operator()<float,float>(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??$?RMM@GenericNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV52@PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::gabor3(class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV32@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV52@AEBV?$Dual@M$01@2@PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::gabor3(class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@0PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@2PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::gabor3(class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::NoiseParams const *)" (?gabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<float,2> const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@PEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::pgabor(class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class Imath_3_1::Vec3<float> const &,struct OSL_v1_12::NoiseParams const *)" (?pgabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Vec3@M@Imath_3_1@@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborPNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class OSL_v1_12::Dual<float,2> const &,class Imath_3_1::Vec3<float> const &,float,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV52@AEBV?$Vec3@M@Imath_3_1@@MPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::pgabor(class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,float,float,struct OSL_v1_12::NoiseParams const *)" (?pgabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV32@0MMPEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborPNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,float,float,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV52@2MMPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<float,2> __cdecl OSL_v1_12::pvt::pgabor(class OSL_v1_12::Dual<float,2> const &,float,struct OSL_v1_12::NoiseParams const *)" (?pgabor@pvt@OSL_v1_12@@YA?AV?$Dual@M$01@2@AEBV32@MPEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GenericPNoise::operator()<float,float>(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<float,2> &,class OSL_v1_12::Dual<float,2> const &,float const &,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??$?RMM@GenericPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@M$01@2@AEBV52@AEBMPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::pgabor3(class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class Imath_3_1::Vec3<float> const &,struct OSL_v1_12::NoiseParams const *)" (?pgabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV32@AEBV?$Vec3@M@Imath_3_1@@PEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborPNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> const &,class OSL_v1_12::Dual<float,2> const &,class Imath_3_1::Vec3<float> const &,float,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV52@AEBV?$Dual@M$01@2@AEBV?$Vec3@M@Imath_3_1@@MPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::pgabor3(class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,float,float,struct OSL_v1_12::NoiseParams const *)" (?pgabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@0MMPEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborPNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<float,2> const &,class OSL_v1_12::Dual<float,2> const &,float,float,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@2MMPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
oslexec.lib(opnoise.obj) : error LNK2019: symbole externe non résolu "class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> __cdecl OSL_v1_12::pvt::pgabor3(class OSL_v1_12::Dual<float,2> const &,float,struct OSL_v1_12::NoiseParams const *)" (?pgabor3@pvt@OSL_v1_12@@YA?AV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@MPEBUNoiseParams@2@@Z) référencé dans la fonction "public: void __cdecl OSL_v1_12::pvt::GaborPNoise::operator()(class OpenImageIO_v2_3::ustring,class OSL_v1_12::Dual<class Imath_3_1::Vec3<float>,2> &,class OSL_v1_12::Dual<float,2> const &,float,struct OSL_v1_12::ShaderGlobals *,struct OSL_v1_12::NoiseParams const *)const " (??RGaborPNoise@pvt@OSL_v1_12@@QEBAXVustring@OpenImageIO_v2_3@@AEAV?$Dual@V?$Vec3@M@Imath_3_1@@$01@2@AEBV?$Dual@M$01@2@MPEAUShaderGlobals@2@PEBUNoiseParams@2@@Z) [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
C:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\bin\Release\bpy.pyd : fatal error LNK1120: 16 externes non résolus [c:\Projects\Blender-build\build_windows_Bpy_x64_vc16_Release\source\creator\blender.vcxproj]
osl is present in the lib folder but it is as if it was not the version needed.
What can I do about this ?