Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Game Development
  4. How to set up the FMOD audio library in Qt Creator for Android

How to set up the FMOD audio library in Qt Creator for Android

Scheduled Pinned Locked Moved Unsolved Game Development
44 Posts 5 Posters 7.5k Views
  • 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.
  • K Offline
    K Offline
    Kim Nancy
    wrote on 17 Jan 2024, 08:37 last edited by
    #33
    This post is deleted!
    1 Reply Last reply
    0
    • 8 Offline
      8 Offline
      8Observer8
      wrote on 19 Mar 2024, 17:59 last edited by 8Observer8
      #34

      @Robert-A-Navarro thank you for your answer. I want to try to run FMOD on Android again but before it I want to try to run it on Windows 10 with Qt6 MinGW 64-bit but I have the problem: undefined reference to `FMOD_System_Create'. My steps are below.

      I downloaded "FMOD Engine" instead of "FMOD Studio" because I need "include" and "libs" only:

      7b290758-fb5d-4477-a8b4-13a6207eaa74-image.png

      This is the contains of the "lib/x64" folder:

      6ee25835-cad8-4b72-a1f3-21cb64133fe7-image.png

      There are no the fmod.a file here. I tried to include "fmod.dll" like this:

      INCLUDEPATH += "E:/Libs/fmod-2.2.21-mingw-64-bit/include"
      LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.dll"
      

      But I have this error: undefined reference to `FMOD_System_Create'

      I tried to use FMOD with SFML in makefile. It works without the problem:

      CC = g++
      INC = -I"E:\Libs\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\include" \
            -I"E:\Libs\box2d-2.4.1-mingw-64-bit\include" \
            -I"E:\Libs\fmod-2.2.21-mingw-64-bit\include"
      LIB = -L"E:\Libs\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\lib" \
            -L"E:\Libs\box2d-2.4.1-mingw-64-bit\lib"
      FLAGS = -c -DSFML_STATIC
       
      all: main.o
          $(CC) main.o $(LIB) -static \
          "E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64\fmod.dll" \
          -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lfreetype \
          -lopengl32  -lwinmm  -lgdi32 -lbox2d -o app
       
      main.o: main.cpp
          $(CC) $(FLAGS) $(INC) main.cpp
      
      J 1 Reply Last reply 20 Mar 2024, 07:41
      0
      • 8 8Observer8
        19 Mar 2024, 17:59

        @Robert-A-Navarro thank you for your answer. I want to try to run FMOD on Android again but before it I want to try to run it on Windows 10 with Qt6 MinGW 64-bit but I have the problem: undefined reference to `FMOD_System_Create'. My steps are below.

        I downloaded "FMOD Engine" instead of "FMOD Studio" because I need "include" and "libs" only:

        7b290758-fb5d-4477-a8b4-13a6207eaa74-image.png

        This is the contains of the "lib/x64" folder:

        6ee25835-cad8-4b72-a1f3-21cb64133fe7-image.png

        There are no the fmod.a file here. I tried to include "fmod.dll" like this:

        INCLUDEPATH += "E:/Libs/fmod-2.2.21-mingw-64-bit/include"
        LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.dll"
        

        But I have this error: undefined reference to `FMOD_System_Create'

        I tried to use FMOD with SFML in makefile. It works without the problem:

        CC = g++
        INC = -I"E:\Libs\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\include" \
              -I"E:\Libs\box2d-2.4.1-mingw-64-bit\include" \
              -I"E:\Libs\fmod-2.2.21-mingw-64-bit\include"
        LIB = -L"E:\Libs\SFML-2.5.1-windows-gcc-7.3.0-mingw-64-bit\lib" \
              -L"E:\Libs\box2d-2.4.1-mingw-64-bit\lib"
        FLAGS = -c -DSFML_STATIC
         
        all: main.o
            $(CC) main.o $(LIB) -static \
            "E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64\fmod.dll" \
            -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lfreetype \
            -lopengl32  -lwinmm  -lgdi32 -lbox2d -o app
         
        main.o: main.cpp
            $(CC) $(FLAGS) $(INC) main.cpp
        
        J Offline
        J Offline
        jsulm
        Lifetime Qt Champion
        wrote on 20 Mar 2024, 07:41 last edited by
        #35

        @8Observer8 said in How to set up the FMOD audio library in Qt Creator for Android:

        LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.dll"

        This is wrong. DLL files are used at runtime. To link your application you need LIB files. In this case it should be:

        LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.lib"
        

        https://forum.qt.io/topic/113070/qt-code-of-conduct

        8 1 Reply Last reply 20 Mar 2024, 08:32
        1
        • J jsulm
          20 Mar 2024, 07:41

          @8Observer8 said in How to set up the FMOD audio library in Qt Creator for Android:

          LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.dll"

          This is wrong. DLL files are used at runtime. To link your application you need LIB files. In this case it should be:

          LIBS += -L"E:/Libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod.lib"
          
          8 Offline
          8 Offline
          8Observer8
          wrote on 20 Mar 2024, 08:32 last edited by 8Observer8
          #36

          This is a solution for the absolute path:

          INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
          LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
          LIBS += -lfmod
          

          Andrew helped me here:

          Looks like you need to add the library path like so: -L"E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64" And instead of specifying the full path to fmod.dll on your command line (“E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64\fmod.dll”) you should use -lfmod instead.

          But I need a relative path and I try it:

          INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
          LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
          LIBS += -lfmod
          

          But I have this error:

          f6053d75-fbd8-46f4-b22a-23cd617beb50-image.png

          It can be solved by copying fmod.dll to the Debug folder:

          52ee6446-2357-43de-ab1c-ae5ffc038e3a-image.png

          @jsulm said in How to set up the FMOD audio library in Qt Creator for Android:

          This is wrong. DLL files are used at runtime. To link your application you need LIB files.

          But where will I find fmod.lib? There is no such file in the lib/x64 folder:

          7eddc53e-7455-44bc-9e5a-ed519ea84962-image.png

          I tried to use fmod_vc.lib instead of fmod.lib:

          INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
          LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod_vc.lib
          

          But I have this error:
          1422af12-20b2-4bda-845e-2dde481443e3-image.png
          I try to use fmod with relative paths. I created the libs folder in my project folder. I don't want to copy fmod.dll to the Debug folder:

          ffac2bab-4f56-4e86-a6cb-2b974726cdea-image.png

          J 1 Reply Last reply 20 Mar 2024, 08:35
          0
          • 8 8Observer8
            20 Mar 2024, 08:32

            This is a solution for the absolute path:

            INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
            LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
            LIBS += -lfmod
            

            Andrew helped me here:

            Looks like you need to add the library path like so: -L"E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64" And instead of specifying the full path to fmod.dll on your command line (“E:\Libs\fmod-2.2.21-mingw-64-bit\lib\x64\fmod.dll”) you should use -lfmod instead.

            But I need a relative path and I try it:

            INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
            LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
            LIBS += -lfmod
            

            But I have this error:

            f6053d75-fbd8-46f4-b22a-23cd617beb50-image.png

            It can be solved by copying fmod.dll to the Debug folder:

            52ee6446-2357-43de-ab1c-ae5ffc038e3a-image.png

            @jsulm said in How to set up the FMOD audio library in Qt Creator for Android:

            This is wrong. DLL files are used at runtime. To link your application you need LIB files.

            But where will I find fmod.lib? There is no such file in the lib/x64 folder:

            7eddc53e-7455-44bc-9e5a-ed519ea84962-image.png

            I tried to use fmod_vc.lib instead of fmod.lib:

            INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
            LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod_vc.lib
            

            But I have this error:
            1422af12-20b2-4bda-845e-2dde481443e3-image.png
            I try to use fmod with relative paths. I created the libs folder in my project folder. I don't want to copy fmod.dll to the Debug folder:

            ffac2bab-4f56-4e86-a6cb-2b974726cdea-image.png

            J Offline
            J Offline
            jsulm
            Lifetime Qt Champion
            wrote on 20 Mar 2024, 08:35 last edited by
            #37

            @8Observer8 said in How to set up the FMOD audio library in Qt Creator for Android:

            But where I will find fmod.lib. There is no such file in the lib folder

            I guess what you have is pre-build release. You need a development package, don't know where you can get it from. Maybe https://www.fmod.com/docs/2.00/api/platforms-win.html helps.

            https://forum.qt.io/topic/113070/qt-code-of-conduct

            8 1 Reply Last reply 20 Mar 2024, 09:04
            0
            • J jsulm
              20 Mar 2024, 08:35

              @8Observer8 said in How to set up the FMOD audio library in Qt Creator for Android:

              But where I will find fmod.lib. There is no such file in the lib folder

              I guess what you have is pre-build release. You need a development package, don't know where you can get it from. Maybe https://www.fmod.com/docs/2.00/api/platforms-win.html helps.

              8 Offline
              8 Offline
              8Observer8
              wrote on 20 Mar 2024, 09:04 last edited by 8Observer8
              #38

              @jsulm said in How to set up the FMOD audio library in Qt Creator for Android:

              Maybe https://www.fmod.com/docs/2.00/api/platforms-win.html helps.

              Unfortunately, there is no new information for me here:

              The C API of the supplied libraries are compatible with MinGW (C++ ABI not supported). The 64 bit dll can be linked directly. You will need to use the import library libfmod.a and libfmodstudio.a in order to link the 32 bit dlls.
              Yes, I see it. There is libfmod.a in the x86 folder and there is no it in the x64 folder. This information that The 64 bit dll can be linked directly works for a relative path (even without copying fmod.dll to the Debug folder)

              INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
              LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
              LIBS += -lfmod
              

              But when I try to change the absolute set up path to the relative path:

              INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
              LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
              LIBS += -lfmod
              

              I have this error:

              03d594c6-9658-4ae3-9171-109002472204-image.png

              It requires to copy 'fmod.dll' to the Debug folder.

              FMOD Core Engine library

              • /api/core/lib/$ARCH/fmod_vc.lib - Release binary for production code (requires fmod.dll at runtime).
              • /api/core/lib/$ARCH/fmodL_vc.lib - Release binary with logging enabled for development (requires fmodL.dll at runtime).

              Yes, it is true. It is really requires fmod.dll at runtime I tried to use fmod_vc.lib:

              INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
              LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod_vc.lib
              

              It works after copying fmod.dll to the Debug folder:

              86b18553-adbb-4925-a36c-883a82998f05-image.png

              It seams like I cannot use the relative set up path without manual copying of fmod.dll to the Debug folder:

              INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
              LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
              LIBS += -lfmod
              

              But why I don't need to copy fmod.dll to the Debug folder when I set up FMOD using the absolute set up path:

              INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
              LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
              LIBS += -lfmod
              
              1 Reply Last reply
              0
              • 8 Offline
                8 Offline
                8Observer8
                wrote on 20 Mar 2024, 09:59 last edited by 8Observer8
                #39

                This is my simple project for Qt6 MinGW 64-bit that plays the OGG audio file on Windows: play-audio-from-resources-fmod-qt6-cpp.zip (2.77 MB) You can download it and experiment with the relative set up file. There is the libs folder with FMOD 2.2.21 inside of the project folder. I want to run it without manual copying of fmod.dll to the Debug folder. You can create the libs folder on your hard drive and copy my contains of 'libs' folder to it to check that absolute set up path doesn't require manual copying of fmod.dll to the Debug folder. You should to uncomment the absolute set up path and comment the relative path (don't forget to change a name of hard drive):

                play-audio-from-resources-fmod-qt6-cpp.pro:

                QT += core gui widgets
                
                CONFIG += c++17
                
                # The absolute set up FMOD path
                # Works without manual copying of fmod.dll to the Debug folder
                # INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
                # LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
                # LIBS += -lfmod
                
                # The relative set up FMOD path
                # Requires manual copying of fmod.dll to the Debug folder
                INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
                LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
                LIBS += -lfmod
                
                # Using fmod_vc.lib
                # Requires manual copying of fmod.dll to the Debug folder
                # INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
                # LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod_vc.lib
                
                # You can make your code fail to compile if it uses deprecated APIs.
                # In order to do so, uncomment the following line.
                # Disables all the APIs deprecated before Qt 6.0.0
                DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
                
                SOURCES += \
                    main.cpp \
                    widget.cpp
                
                HEADERS += \
                    widget.h
                
                RESOURCES += \
                    assets.qrc
                

                widget.h

                #ifndef WIDGET_H
                #define WIDGET_H
                
                #include <QtWidgets/QWidget>
                #include <fmod.h>
                
                class Widget : public QWidget
                {
                    Q_OBJECT
                
                public:
                    Widget(QWidget *parent = nullptr);
                    ~Widget();
                
                private:
                    FMOD_SYSTEM *m_system;
                    FMOD_SOUND *m_sound;
                };
                
                #endif // WIDGET_H
                

                widget.cpp

                #include "widget.h"
                
                #include <QtCore/QByteArray>
                #include <QtCore/QFile>
                #include <QtCore/QString>
                
                Widget::Widget(QWidget *parent)
                    : QWidget(parent)
                {
                    FMOD_System_Create(&m_system, FMOD_VERSION);
                    FMOD_System_Init(m_system, 32, FMOD_INIT_NORMAL, 0);
                
                    QString soundPath(":/assets/audio/overworld.ogg");
                    QFile f(soundPath);
                    if (!f.open(QIODevice::OpenModeFlag::ReadOnly))
                    {
                        qDebug() << "Faild to open the file: " << soundPath;
                        return;
                    }
                    QByteArray soundData = f.readAll();
                    f.close();
                
                    FMOD_CREATESOUNDEXINFO* exinfo = new FMOD_CREATESOUNDEXINFO();
                    exinfo->length = static_cast<unsigned int>(soundData.length());
                    exinfo->cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
                    FMOD_System_CreateSound(m_system, soundData.data(), FMOD_OPENMEMORY, exinfo, &m_sound);
                
                    FMOD_Sound_SetMode(m_sound, FMOD_LOOP_OFF);
                
                    FMOD_System_PlaySound(m_system, m_sound, 0, false, 0);
                }
                
                Widget::~Widget()
                {
                }
                

                main.cpp

                #include "widget.h"
                
                #include <QtWidgets/QApplication>
                
                int main(int argc, char *argv[])
                {
                    QApplication app(argc, argv);
                    Widget w;
                    w.show();
                    return app.exec();
                }
                

                assets.qrc

                <RCC>
                    <qresource prefix="/">
                        <file>assets/audio/overworld.ogg</file>
                    </qresource>
                </RCC>
                
                J 1 Reply Last reply 20 Mar 2024, 10:05
                0
                • 8 8Observer8
                  20 Mar 2024, 09:59

                  This is my simple project for Qt6 MinGW 64-bit that plays the OGG audio file on Windows: play-audio-from-resources-fmod-qt6-cpp.zip (2.77 MB) You can download it and experiment with the relative set up file. There is the libs folder with FMOD 2.2.21 inside of the project folder. I want to run it without manual copying of fmod.dll to the Debug folder. You can create the libs folder on your hard drive and copy my contains of 'libs' folder to it to check that absolute set up path doesn't require manual copying of fmod.dll to the Debug folder. You should to uncomment the absolute set up path and comment the relative path (don't forget to change a name of hard drive):

                  play-audio-from-resources-fmod-qt6-cpp.pro:

                  QT += core gui widgets
                  
                  CONFIG += c++17
                  
                  # The absolute set up FMOD path
                  # Works without manual copying of fmod.dll to the Debug folder
                  # INCLUDEPATH += "E:/libs/fmod-2.2.21-mingw-64-bit/include"
                  # LIBS += -L"E:/libs/fmod-2.2.21-mingw-64-bit/lib/x64/"
                  # LIBS += -lfmod
                  
                  # The relative set up FMOD path
                  # Requires manual copying of fmod.dll to the Debug folder
                  INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
                  LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
                  LIBS += -lfmod
                  
                  # Using fmod_vc.lib
                  # Requires manual copying of fmod.dll to the Debug folder
                  # INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
                  # LIBS += $$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64/fmod_vc.lib
                  
                  # You can make your code fail to compile if it uses deprecated APIs.
                  # In order to do so, uncomment the following line.
                  # Disables all the APIs deprecated before Qt 6.0.0
                  DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
                  
                  SOURCES += \
                      main.cpp \
                      widget.cpp
                  
                  HEADERS += \
                      widget.h
                  
                  RESOURCES += \
                      assets.qrc
                  

                  widget.h

                  #ifndef WIDGET_H
                  #define WIDGET_H
                  
                  #include <QtWidgets/QWidget>
                  #include <fmod.h>
                  
                  class Widget : public QWidget
                  {
                      Q_OBJECT
                  
                  public:
                      Widget(QWidget *parent = nullptr);
                      ~Widget();
                  
                  private:
                      FMOD_SYSTEM *m_system;
                      FMOD_SOUND *m_sound;
                  };
                  
                  #endif // WIDGET_H
                  

                  widget.cpp

                  #include "widget.h"
                  
                  #include <QtCore/QByteArray>
                  #include <QtCore/QFile>
                  #include <QtCore/QString>
                  
                  Widget::Widget(QWidget *parent)
                      : QWidget(parent)
                  {
                      FMOD_System_Create(&m_system, FMOD_VERSION);
                      FMOD_System_Init(m_system, 32, FMOD_INIT_NORMAL, 0);
                  
                      QString soundPath(":/assets/audio/overworld.ogg");
                      QFile f(soundPath);
                      if (!f.open(QIODevice::OpenModeFlag::ReadOnly))
                      {
                          qDebug() << "Faild to open the file: " << soundPath;
                          return;
                      }
                      QByteArray soundData = f.readAll();
                      f.close();
                  
                      FMOD_CREATESOUNDEXINFO* exinfo = new FMOD_CREATESOUNDEXINFO();
                      exinfo->length = static_cast<unsigned int>(soundData.length());
                      exinfo->cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
                      FMOD_System_CreateSound(m_system, soundData.data(), FMOD_OPENMEMORY, exinfo, &m_sound);
                  
                      FMOD_Sound_SetMode(m_sound, FMOD_LOOP_OFF);
                  
                      FMOD_System_PlaySound(m_system, m_sound, 0, false, 0);
                  }
                  
                  Widget::~Widget()
                  {
                  }
                  

                  main.cpp

                  #include "widget.h"
                  
                  #include <QtWidgets/QApplication>
                  
                  int main(int argc, char *argv[])
                  {
                      QApplication app(argc, argv);
                      Widget w;
                      w.show();
                      return app.exec();
                  }
                  

                  assets.qrc

                  <RCC>
                      <qresource prefix="/">
                          <file>assets/audio/overworld.ogg</file>
                      </qresource>
                  </RCC>
                  
                  J Offline
                  J Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 20 Mar 2024, 10:05 last edited by
                  #40

                  @8Observer8 If you want to run your app outside of QtCreator you first have to deploy it, so it contains all needed libraries.

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  8 1 Reply Last reply 20 Mar 2024, 11:19
                  0
                  • J jsulm
                    20 Mar 2024, 10:05

                    @8Observer8 If you want to run your app outside of QtCreator you first have to deploy it, so it contains all needed libraries.

                    8 Offline
                    8 Offline
                    8Observer8
                    wrote on 20 Mar 2024, 11:19 last edited by 8Observer8
                    #41

                    @jsulm I want to run my app inside of Qt Creator with relative set up path (with using $$PWD instead of "E:/) because I want to distribute my examples with included libs. For example, I can post my examples (ZIPs) on the forums and people can download it and run without set up of FMOD and so on. And without manual copying of fmod.dlll to the Debug folder. For a while the "E:/ method (absolute path) works without manual copying of fmod.dll but the $$PWD method (relative path) requires to copy fmod.dll to the Debug folder. The distribution of EXE is very clear for me. Yes, of course I should distribute fmod.dll, Qt6Core.dll and so on with EXE. My question about distribution of Qt project with libs to run it very quickly in Qt Creator on another computer.

                    The $$PWD method (relative path) allows to include all libs to a project. I should works like this - everyone can download the project and run it without downloading requires libs and without manual copying of fmod.dll to the Debug folder:

                    eb019c85-e68a-4755-beca-8b693bb71c2b-image.png

                    J 1 Reply Last reply 20 Mar 2024, 12:01
                    0
                    • 8 8Observer8
                      20 Mar 2024, 11:19

                      @jsulm I want to run my app inside of Qt Creator with relative set up path (with using $$PWD instead of "E:/) because I want to distribute my examples with included libs. For example, I can post my examples (ZIPs) on the forums and people can download it and run without set up of FMOD and so on. And without manual copying of fmod.dlll to the Debug folder. For a while the "E:/ method (absolute path) works without manual copying of fmod.dll but the $$PWD method (relative path) requires to copy fmod.dll to the Debug folder. The distribution of EXE is very clear for me. Yes, of course I should distribute fmod.dll, Qt6Core.dll and so on with EXE. My question about distribution of Qt project with libs to run it very quickly in Qt Creator on another computer.

                      The $$PWD method (relative path) allows to include all libs to a project. I should works like this - everyone can download the project and run it without downloading requires libs and without manual copying of fmod.dll to the Debug folder:

                      eb019c85-e68a-4755-beca-8b693bb71c2b-image.png

                      J Offline
                      J Offline
                      jsulm
                      Lifetime Qt Champion
                      wrote on 20 Mar 2024, 12:01 last edited by
                      #42

                      @8Observer8 It looks like the library is part of your project. You could use https://wiki.qt.io/SUBDIRS_-_handling_dependencies project and make your main project depend on the library sub-project. In that case the libs should be copied during the build.

                      https://forum.qt.io/topic/113070/qt-code-of-conduct

                      8 1 Reply Last reply 20 Mar 2024, 12:33
                      0
                      • J jsulm
                        20 Mar 2024, 12:01

                        @8Observer8 It looks like the library is part of your project. You could use https://wiki.qt.io/SUBDIRS_-_handling_dependencies project and make your main project depend on the library sub-project. In that case the libs should be copied during the build.

                        8 Offline
                        8 Offline
                        8Observer8
                        wrote on 20 Mar 2024, 12:33 last edited by 8Observer8
                        #43

                        @jsulm said in How to set up the FMOD audio library in Qt Creator for Android:

                        It looks like the library is part of your project.

                        I don't have a source code of the proprietary FMOD library. I have only two folders for this library in my project folder: include:

                        771b82da-829c-4dec-a883-47015741fc00-image.png
                        and libs:

                        2bef3acf-802e-4747-ac87-292bd206413c-image.png

                        I think SUBDIRS cannot copy fmod.dll from the libs/fmod-2.2.21-mingw-64-bit/lib/x64 folder to the Debug folder or can it?

                        1 Reply Last reply
                        0
                        • 8 Offline
                          8 Offline
                          8Observer8
                          wrote on 25 Mar 2024, 11:02 last edited by 8Observer8
                          #44

                          I solved the problem with the relative paths to the library! I just added -L before $$PWD like this:

                          INCLUDEPATH += $$PWD/libs/fmod-2.2.21-mingw-64-bit/include
                          LIBS += -L$$PWD/libs/fmod-2.2.21-mingw-64-bit/lib/x64
                          LIBS += -lfmod
                          

                          Now you can download the next example and run it in Qt Creator (with MinGW 64) without necessary to set up FMOD or changing the paths in pro-file: play-audio-from-resources-fmod-qt6-cpp.zip (2.51 MB)

                          1 Reply Last reply
                          0

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved