• Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Windows build instructions

    Scheduled Pinned Locked Moved
    Development
    2
    5
    387
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      Erriez
      last edited by Erriez

      I'm following the Strawberry MSVC build instructions for Windows to add a new feature, but encounter some issues:

      1. I've completed steps Requirements ... Alternative 1.
      2. The following step is unclear:
      Add the following extra CMake arguments:
      
      For debug:  -DARCH=x86_64 -DICU_ROOT=c:\\strawberry_msvc_x86_64_debug
      For release: -DARCH=x86_64 -DICU_ROOT=c:\\strawberry_msvc_x86_64_release
      

      I've interpreted this as: Ctrl+Shift+P Type: CMake Settings Assumming the following setting should be updated:

      4bbf2b19-516e-4720-924d-1b4d22914d35-image.png

      Is this correct for release build as there are two command arguments as shown in the screenshot?

      When building strawberry.exe, it results in build errors:

      Severity	Code	Description	Project	File	Line	Suppression State	Details
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\organizedialog.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static void __cdecl icu_75::UMemory::operator delete(void *)" (__imp_??3UMemory@icu_75@@SAXPEAX@Z) referenced in function "public: virtual void * __cdecl icu_75::StringByteSink<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::`scalar deleting destructor'(unsigned int)" (??_G?$StringByteSink@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@icu_75@@UEAAPEAXI@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: __cdecl icu_75::ByteSink::ByteSink(void)" (__imp_??0ByteSink@icu_75@@QEAA@XZ) referenced in function "public: __cdecl icu_75::StringByteSink<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::StringByteSink<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,int)" (??0?$StringByteSink@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@icu_75@@QEAA@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: virtual __cdecl icu_75::ByteSink::~ByteSink(void)" (__imp_??1ByteSink@icu_75@@UEAA@XZ) referenced in function "int `public: __cdecl icu_75::StringByteSink<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >::StringByteSink<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,int)'::`1'::dtor$0" (?dtor$0@?0???0?$StringByteSink@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@icu_75@@QEAA@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z@4HA)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: void __cdecl icu_75::UnicodeString::toUTF8(class icu_75::ByteSink &)const " (__imp_?toUTF8@UnicodeString@icu_75@@QEBAXAEAVByteSink@2@@Z) referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __cdecl icu_75::UnicodeString::toUTF8String<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)const " (??$toUTF8String@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@UnicodeString@icu_75@@QEBAAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV23@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: int __cdecl icu_75::UnicodeString::length(void)const " (__imp_?length@UnicodeString@icu_75@@QEBAHXZ) referenced in function "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __cdecl icu_75::UnicodeString::toUTF8String<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)const " (??$toUTF8String@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@UnicodeString@icu_75@@QEBAAEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV23@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: __cdecl icu_75::UnicodeString::UnicodeString(char const *)" (__imp_??0UnicodeString@icu_75@@QEAA@PEBD@Z) referenced in function "class QString __cdecl Utilities::Transliterate(class QString const &)" (?Transliterate@Utilities@@YA?AVQString@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: virtual __cdecl icu_75::UnicodeString::~UnicodeString(void)" (__imp_??1UnicodeString@icu_75@@UEAA@XZ) referenced in function "class QString __cdecl Utilities::Transliterate(class QString const &)" (?Transliterate@Utilities@@YA?AVQString@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol "__declspec(dllimport) public: static class icu_75::Transliterator * __cdecl icu_75::Transliterator::createInstance(class icu_75::UnicodeString const &,enum UTransDirection,enum UErrorCode &)" (__imp_?createInstance@Transliterator@icu_75@@SAPEAV12@AEBVUnicodeString@2@W4UTransDirection@@AEAW4UErrorCode@@@Z) referenced in function "class QString __cdecl Utilities::Transliterate(class QString const &)" (?Transliterate@Utilities@@YA?AVQString@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "public: virtual char * __cdecl icu_75::ByteSink::GetAppendBuffer(int,int,char *,int,int *)" (?GetAppendBuffer@ByteSink@icu_75@@UEAAPEADHHPEADHPEAH@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "public: virtual void __cdecl icu_75::ByteSink::Flush(void)" (?Flush@ByteSink@icu_75@@UEAAXXZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\transliterate.cpp.obj	1		
      Error	LNK2019	unresolved external symbol ucsdet_open_75 referenced in function "class QByteArray __cdecl Utilities::TextEncodingFromData(class QByteArray const &)" (?TextEncodingFromData@Utilities@@YA?AVQByteArray@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\textencodingutils.cpp.obj	1		
      Error	LNK2019	unresolved external symbol ucsdet_close_75 referenced in function "public: __cdecl `class QByteArray __cdecl Utilities::TextEncodingFromData(class QByteArray const &)'::`2'::<lambda_1>::operator()(void)const " (??R<lambda_1>@?1??TextEncodingFromData@Utilities@@YA?AVQByteArray@@AEBV3@@Z@QEBA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\textencodingutils.cpp.obj	1		
      Error	LNK2019	unresolved external symbol ucsdet_setText_75 referenced in function "class QByteArray __cdecl Utilities::TextEncodingFromData(class QByteArray const &)" (?TextEncodingFromData@Utilities@@YA?AVQByteArray@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\textencodingutils.cpp.obj	1		
      Error	LNK2019	unresolved external symbol ucsdet_detect_75 referenced in function "class QByteArray __cdecl Utilities::TextEncodingFromData(class QByteArray const &)" (?TextEncodingFromData@Utilities@@YA?AVQByteArray@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\textencodingutils.cpp.obj	1		
      Error	LNK2019	unresolved external symbol ucsdet_getName_75 referenced in function "class QByteArray __cdecl Utilities::TextEncodingFromData(class QByteArray const &)" (?TextEncodingFromData@Utilities@@YA?AVQByteArray@@AEBV2@@Z)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\textencodingutils.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\moodbaritemdelegate.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\albumcoverchoicecontroller.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\edittagdialog.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\tagfetcher.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\playlistdelegates.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\playlistmanager.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\playlistgeneratorinserter.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\smartplaylistsearchpreview.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\gstengine.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\gstenginepipeline.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\collectionmodel.cpp.obj	1		
      Error	LNK2001	unresolved external symbol "__declspec(dllimport) public: __cdecl QtPrivate::ResultIteratorBase::~ResultIteratorBase(void)" (__imp_??1ResultIteratorBase@QtPrivate@@QEAA@XZ)	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\playlist.cpp.obj	1		
      Error	LNK1120	16 unresolved externals	C:\straberrymusicplayer\out\build\x64-Debug\straberrymusicplayer	C:\straberrymusicplayer\out\build\x64-Debug\strawberry.exe	1		
      
      1. In step Copy dependencies (MSYS2 Shell) I'm lost:
      Run the "copy-deps-msvc-x64-debug-qt6.bat" or "copy-deps-msvc-x64-release-qt6.bat" 
      batch file first to copy all plugins to the build directory. 
      

      Where is are these .bat files located?

      jonasJ 1 Reply Last reply Reply Quote 0
      • jonasJ
        jonas @Erriez
        last edited by jonas

        @Erriez

        These are linking errors, not build errors. The icu related linking errors are most likely caused by having conflicting ICU versions installed.
        You need to check the logs to see where it's picked up, or you could build with /VERBOSE.
        You should be able to fix it by removing the conflicting ICU version.
        There could also be icu libraries in C:\Program Files (x86)\Windows Kits, if it's still picking up ICU from there you can search for *icu*lib and *icu*h and rename those files, although I do no have to do that.
        The second linking errors could be caused by having conflicting Qt versions installed.

        E 1 Reply Last reply Reply Quote 0
        • E
          Erriez @jonas
          last edited by Erriez

          @jonas Thanks for your quick reply.

          Instead of installing all tools manually, I've now executed the batch files on a clean Windows 11 and configured the environment variables as described:

          • Run download.bat (Windows Terminal)
          • Run install.bat (Windows Terminal as administrator. It requires some manual installations like Visual Studio 2022)
          • Run build.bat (Run in Visual Studio 2022 x86_x64 Native Tools Command Prompt; It builds all dependencies and sources which takes hours, still running...)

          I had no success by extracting binary dependencies to C:\strawberry_msvc_x86_64_debug as it results in unsatisfied requirement errors.

          I assume this is the right way of building?

          Note: There is a bug in download.bat which should be changed to:

          -https://7-zip.org/a/7z2201-x64.exe
          +https://7-zip.org/a/7z%7ZIP_VERSION%-x64.exe
          

          as version.bat contains @set 7ZIP_VERSION=2301 which now results in a download/install filename mismatch.

          1 Reply Last reply Reply Quote 0
          • E
            Erriez
            last edited by

            I found the root cause as I was accidentally mixing debug and release builds.

            Unfortunately, the Windows MSVC build is currently broken with outdated instructions. I've applied multiple fixes manually and now builds successfully. I'll create pull-requests for each item.

            1 Reply Last reply Reply Quote 0
            • E
              Erriez
              last edited by

              Resolved, Windows build instructions for developers is updated in strawberrymusicplayer/strawberry-msvc.

              1 Reply Last reply Reply Quote 1
              • First post
                Last post
              Powered by NodeBB | Contributors