Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Cannot find <library path>: Permission Denied



  • I have been trying to figure this out forever and cant seem to gete it to compile, i am trying to use libcurl library put keep getting the error in the title. I will provide my .pro code and also the compile output.

    .pro code

    QT      += core gui
    QT      += core gui charts
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS
    TEMPLATE = app
    RC_FILE = myapp.rc.txt
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    SOURCES += \
        MainWindow.cpp \
        login.cpp \
        main.cpp \
        webscrapper.cpp
    
    HEADERS += \
        MainWindow.h \
        login.h \
        webscrapper.h
    
    FORMS += \
        MainWindow.ui \
        login.ui \
    
    
    DISTFILES += \
        Contents/banner.qml
    
    RESOURCES += \
        res.qrc
    
    win32: LIBS += C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib\ -llibcurl
    
    INCLUDEPATH += C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\include\curl
    DEPENDPATH += C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\include\curl
    
    
    

    Compile Output

    23:11:02: Starting: "C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe" -j8
    C:\Qt\5.14.2\mingw73_64\bin\qmake.exe -o Makefile AlgoApplicationUI.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
    C:/Qt/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory 'C:/Users/laner/Documents/GitHub/AlgoApp/Program/QT UI/AlgoApplicationUI'
    g++ -Wl,-subsystem,windows -mthreads -o debug\AlgoApplicationUI.exe debug/MainWindow.o debug/login.o debug/main.o debug/webscrapper.o debug/qrc_res.o debug/moc_MainWindow.o debug/moc_login.o  C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib -llibcurl C:\Qt\5.14.2\mingw73_64\lib\libQt5Charts.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Widgets.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Gui.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Core.a debug\myapp_res.o.txt  -lmingw32 C:\Qt\5.14.2\mingw73_64\lib\libqtmain.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.7.25-winx64\lib -LC:\Utils\postgresql\pgsql\lib -lshell32 
    C:/Qt/Tools/mingw730_64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib: Permission denied
    C:/Qt/Tools/mingw730_64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -llibcurl
    collect2.exe: error: ld returned 1 exit status
    mingw32-make[1]: *** [Makefile.Debug:84: debug/AlgoApplicationUI.exe] Error 1
    mingw32-make: *** [Makefile:45: debug] Error 2
    mingw32-make[1]: Leaving directory 'C:/Users/laner/Documents/GitHub/AlgoApp/Program/QT UI/AlgoApplicationUI'
    23:11:08: The process "C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project AlgoApplicationUI (kit: Desktop Qt 5.14.2 MinGW 64-bit)
    When executing step "Make"
    23:11:08: Elapsed time: 00:06.
    

  • Lifetime Qt Champion

    @Laner107 said in Cannot find <library path>: Permission Denied:

    LIBS += C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib\

    You forgot -L in front of the path:

    LIBS +=-LC:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib\
    

    -llibcurl most probably should be -lcurl
    Also you should use / instead of \ in pro files even on Windows.
    And it is a good idea to put paths into "" as they could contain spaces.



  • This post is deleted!


  • @jsulm I appreciate the response, well I made the changes and it compiled but now im getting a couple undefinded reference errors, my code is below if you would like to take a look at my class.

    class CurlObj
    {
    public:
        CurlObj (string url)
        {
            curl = curl_easy_init();
            if (!curl) {
                throw string ("Curl did not initialize.");
            }
    
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &CurlObj::curlWriter);
            curl_easy_setopt(curl, CURLOPT_WRITEDATA, &curlBuffer);
            curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
            curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
            curl_easy_perform(curl);
        };
    
        static int curlWriter(char *data, int size, int nmemb, std::string *buffer)
        {
            int result = 0;
            if (buffer != NULL) {
                buffer->append(data, size * nmemb);
                result = size * nmemb;
            }
    
            return result;
        }
    
        std::string getData()
        {
            return curlBuffer;
        }
    
    protected:
        CURL * curl;
        std::string curlBuffer;
    };
    

    The errors are "undefined reference to 'imp_curl_easy_init' and 'imp_curl_easy_setop'" any idea why this would be?


  • Lifetime Qt Champion

    Hi,

    What exact error are you getting ?
    Might be a silly question but are you sure that libcurl really is in 64 bit format ?



  • @SGaist Yes it is I built it using x64 native tools vs command prompt and took the .lib and .include folders from the build, and i posted the errors below the code,

    The errors are "undefined reference to 'imp_curl_easy_init' and 'imp_curl_easy_setop'" any idea why this would be?


  • Lifetime Qt Champion

    @Laner107 said in Cannot find <library path>: Permission Denied:

    any idea why this would be?

    Either these functions are not in the lib you're linking or the lib is not found/not compatible.
    Do you now use -lcurl instead of -llibcurl ?



  • @jsulm No because the filename is libcurl? And this code is straight from github so I know it should work.


  • Lifetime Qt Champion

    @Laner107 said in Cannot find <library path>: Permission Denied:

    No because the filename is libcurl?

    It doesn't matter, when using -l you do not specify the prefix (lib) and you do not specify file name extension (dll, so). At least it is like this on UNIX/Linux.



  • @jsulm So now its saying, "cannot find -lcurl" so i assume for windows we keep the actual name? And if its not that do you have any idea why it would be giving me the undefined errors even though they are in the library, and how do i know if its not compaitable?


  • Lifetime Qt Champion

    @Laner107 said in Cannot find <library path>: Permission Denied:

    And if its not that do you have any idea why it would be giving me the undefined errors even though they are in the library

    I already wrote that this is either:

    • Those functions are not in that lib, or
    • The lib is not found, or
    • The lib is not compatible (built with different compiler or for different architecture)

    Can you post the whole build log?



  • @jsulm Is this the log you are looking for?

    14:55:14: Running steps for project AlgoApplicationUI...
    14:55:14: Configuration unchanged, skipping qmake step.
    14:55:14: Starting: "C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe" -j8
    C:/Qt/Tools/mingw730_64/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory 'C:/Users/laner/Documents/GitHub/AlgoApp/Program/QT UI/AlgoApplicationUI'
    g++ -Wl,-subsystem,windows -mthreads -o debug\AlgoApplicationUI.exe debug/MainWindow.o debug/login.o debug/main.o debug/webscrapper.o debug/qrc_res.o debug/moc_MainWindow.o debug/moc_login.o  -LC:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib -llibcurl C:\Qt\5.14.2\mingw73_64\lib\libQt5Charts.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Widgets.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Gui.a C:\Qt\5.14.2\mingw73_64\lib\libQt5Core.a debug\myapp_res.o.txt  -lmingw32 C:\Qt\5.14.2\mingw73_64\lib\libqtmain.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.7.25-winx64\lib -LC:\Utils\postgresql\pgsql\lib -lshell32 
    debug/MainWindow.o: In function `CurlObj::CurlObj(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)':
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:37: undefined reference to `__imp_curl_easy_init'
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:42: undefined reference to `__imp_curl_easy_setopt'
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:43: undefined reference to `__imp_curl_easy_setopt'
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:44: undefined reference to `__imp_curl_easy_setopt'
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:45: undefined reference to `__imp_curl_easy_setopt'
    C:\Users\laner\Documents\GitHub\AlgoApp\Program\QT UI\AlgoApplicationUI/MainWindow.cpp:46: undefined reference to `__imp_curl_easy_perform'
    collect2.exe: error: ld returned 1 exit status
    mingw32-make[1]: *** [Makefile.Debug:84: debug/AlgoApplicationUI.exe] Error 1
    mingw32-make: *** [Makefile:45: debug] Error 2
    mingw32-make[1]: Leaving directory 'C:/Users/laner/Documents/GitHub/AlgoApp/Program/QT UI/AlgoApplicationUI'
    14:55:16: The process "C:\Qt\Tools\mingw730_64\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project AlgoApplicationUI (kit: Desktop Qt 5.14.2 MinGW 64-bit)
    When executing step "Make"
    


  • @Laner107
    Every example on the web (gcc) uses -lcurl, not -llibcurl. I don't think that would change for Windows, unless you have something which says that? It concerns me you say that generates "cannot find -lcurl". Do you want to tell us what exactly there is in C:\Users\laner\Documents\GitHub\AlgoApp\Program\Libraries\curl-7.69.1\x64Release\lib that looks something like libcurl.a?





  • @Laner107
    You don't have file extensions visible (!), but that looks like a .lib file to me, where I was expecting a .a. I think mingw now links against *.lib files, and that might be where the difference bewteen -lcurl vs -llibcurl comes from.

    This is getting beyond my pay-grade. Wherever it came from, it's for gcc/mingw, not for msvc, is it? Did you build it or download it? Did the instructions relate to using msvc or mingw as the compiler/linker? I don't have the answers, just thoughts for you....



  • @JonB I built it but im sure I got something messed up with the building of it, is there a suitable way to build libraries using QT or what would you recomend me doing to get this library to work?



  • @Laner107
    As I said, I don't know this stuff, I'm only guessing. I'll have to leave it for others to help.

    My last quick test thought is: try recompiling your application sources (not the curl ones) with -DCURL_STATICLIB flag, and then relink. This may be nonsense or may make no difference. Worth a try. Then I'm afraid I'm bowing out.



  • Usually when linking libs in .pro files with the -l, I don't have good luck. To get it to work a lot of times I will link the lib file itself.

    Here is an example of what I mean.

    INCLUDEPATH += "$$PWD/vlc-qt/include"
    
    LIBS += "$$PWD/vlc-qt/libs/mingw64/libVLCQtQml.dll"
    LIBS += "$$PWD/vlc-qt/libs/mingw64/libVLCQtCore.dll"
    

    This will build but I have issues when I run. I usually have to copy the .dlls into the application's build directory (the same folder as the .exe file that is built).



  • @JonB Its okay i thank you for the help!!

    @MrShawn I am quite new to the idea of building and using libraries, I notice there is an actuall folder for the libraries under mingw, I decided to store my one library im using in its own folder someone else, will this effect anything or should i keep it in mingw folder? And also where can i find the .dll files for my library i built as i can only find the .lib file and include folder?



  • @MrShawn It also appear under my build settings that the build configuration is Debug and the make is a mingw32-make.exe, so does that mean my library is suppose to be a debug .lib that is also x32 instead of x64? This is all quite overwhelming and confusing and sorry if Im being a hassle.



  • @JonB ALso where do i input the -DCURL_STATICLIB flag at? And do i need to download .dll files and put them into the mingw folder or since its a static library is it okay?


  • Lifetime Qt Champion

    @Laner107 said in Cannot find <library path>: Permission Denied:

    suppose to be a debug .lib that is also x32 instead of x64?

    It needs to be the same as your app. If you build your app for 32 bit then the lib must be 32bit, if you build for 64bit then the build must be 64bit. You can't mix. Also, if you build in release mode then use the lib build in release mode.



  • @jsulm I actually ended up doing that now everything matches, but it says in documentation since im doing a static library i am suppose to put CURL_STATICLIB, i just cant find out where, here is the documentation.

    Building your own application with a static libcurl

    When building an application that uses the static libcurl library on Windows,
    you must define CURL_STATICLIB. Otherwise the linker will look for dynamic
    import symbols.


  • Lifetime Qt Champion

    @Laner107 In your top pro file add:

    DEFINES += CURL_STATICLIB
    

    https://doc.qt.io/qt-5/qmake-language.html



  • @jsulm Now im getting 500+ errors from the ipv6-winssl folder and objects


  • Lifetime Qt Champion

    @Laner107 Most probably some other libraries are missing



  • @jsulm Now it saying that qt5widgets.dll is missing, how do I fix this?


  • Lifetime Qt Champion

    @Laner107 Is your Qt installation broken? How did you install Qt? Did you search for that dll in your qt installation already?



  • @jsulm to fix it i literally had to copy all the .dll files in qt and paste them in the shadow build folder as well as all the plugins, do you know why i have to do this?


  • Lifetime Qt Champion

    @Laner107 What exactly was the problem actually?
    You could not build or you could not start your app?



  • @jsulm I believe it was able to build but when i would start my app it would instantly crash, its now working though but like i said i had to had all the files to the shadow build.


  • Lifetime Qt Champion

    @Laner107 If you want to start your app outside of QtCreator you need to deploy it properly first.
    See https://doc.qt.io/qt-5/windows-deployment.html


Log in to reply