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

Can't add HDF5 library in empty Qt-project



  • Hello,
    I'm newbie in Qt so please don't get mad about my question (I saw similiar issues in Internet but they didn't help me). I use QtCreator:
    MSVC 2017 x64
    Windows 7 x64
    Qt 5

    I installed HDF5 library with MSVC 2017 x64. Now I'm trying to create a Qt project and perform example from HDF5 web-syte: link text
    Hdf5 library is in: C:\apps\MSVC_apps_debug\HDF5\lib
    I add the library to the Qt-project via interactive Qt tool.
    I get errors (translated from russian):
    main.obj: -1: error: LNK2019: reference to an unresolved external symbol H5check_version in the main function
    main.obj: -1: error: LNK2019: reference to an unresolved external symbol H5check_version in the main function
    main.obj: -1: error: LNK2001: unresolved external character "" public: static class H5 :: FileAccPropList const & const H5 :: FileAccPropList :: DEFAULT "(? DEFAULT @ FileAccPropList @ H5 @@ 2AEBV12 @ EB)"

    etc...
    My main.cpp:

    #include "mainwindow.h"
    
    #include <QApplication>
    
    /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
     * Copyright by The HDF Group.						     *
     * Copyright by the Board of Trustees of the University of Illinois.	     *
     * All rights reserved.							     *
     *	                                                                     *
     * This file is part of HDF5.  The full HDF5 copyright notice, including     *
     * terms governing use, modification, and redistribution, is contained in    *
     * the COPYING file, which can be found at the root of the source code       *
     * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases.  *
     * If you do not have access to either file, you may request a copy from     *
     * help@hdfgroup.org.                                                        *
     * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    
    /*
     *  This example illustrates how to create a dataset that is a 4 x 6
     *  array. It is used in the HDF5 Tutorial.
     */
    
    #include <iostream>
    #include <string>
    #include "H5Cpp.h"
    using namespace H5;
    
    const H5std_string	FILE_NAME("h5tutr_dset.h5");
    const H5std_string	DATASET_NAME("dset");
    const int	 NX = 4;                     // dataset dimensions
    const int	 NY = 6;
    const int	 RANK = 2;
    
    int main (void)
    {
        // Try block to detect exceptions raised by any of the calls inside it
        try
        {
        // Turn off the auto-printing when failure occurs so that we can
        // handle the errors appropriately
        Exception::dontPrint();
    
        // Create a new file using the default property lists.
        H5File file(FILE_NAME, H5F_ACC_TRUNC);
    
        // Create the data space for the dataset.
        hsize_t dims[2];               // dataset dimensions
        dims[0] = NX;
        dims[1] = NY;
        DataSpace dataspace(RANK, dims);
    
        // Create the dataset.
        DataSet dataset = file.createDataSet(DATASET_NAME, PredType::STD_I32BE, dataspace);
    
        }  // end of try block
    
        // catch failure caused by the H5File operations
        catch(FileIException error)
        {
        error.printErrorStack();
        return -1;
        }
    
        // catch failure caused by the DataSet operations
        catch(DataSetIException error)
        {
        error.printErrorStack();
        return -1;
        }
    
        // catch failure caused by the DataSpace operations
        catch(DataSpaceIException error)
        {
        error.printErrorStack();
        return -1;
        }
    
        return 0;  // successfully terminated
    }
    
    

    My .ppro-file:

    QT       += core gui
    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
    
    # 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 += \
        main.cpp \
        mainwindow.cpp
    
    HEADERS += \
        mainwindow.h
    
    FORMS += \
        mainwindow.ui
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../apps/MSVC_apps/HDF5/lib/ -lhdf5_cpp_
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../apps/MSVC_apps/HDF5/lib/ -lhdf5_cpp_d
    
    INCLUDEPATH += $$PWD/../../../../../apps/MSVC_apps/HDF5/include
    DEPENDPATH += $$PWD/../../../../../apps/MSVC_apps/HDF5/include
    
    

  • Lifetime Qt Champion

    Seeing the numbers of .dll files in your bin folder, you shall have the same number of .lib files somewhere. I suspect that you are not linking enough of the hdf5 libraries.


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Do you have only one library generated for hdf5 or are there several ?



  • Thank you for response,
    No, I have several of them! I attach pictures that better represent my current situation.
    lib.png include.png HDF5.png bin.png



  • @Please_Help_me_D said in Can't add HDF5 library in empty Qt-project:

    LIBS += -L$$PWD/../../../../../apps/MSVC_apps/HDF5/lib/

    For whatever is your PWD (project dir) that path won't match

    C:\apps\MSVC_apps_debug\HDF5\lib



  • @Pablo-J-Rogina
    That is interesting, thank! Why those path are not equal?
    But anyway, I changed those lines to the following:

    LIBS += -LC:/apps/MSVC_apps_debug/HDF5/ -lhdf5_cpp_D
    
    INCLUDEPATH += C:/apps/MSVC_apps_debug/HDF5/include
    DEPENDPATH += C:/apps/MSVC_apps_debug/HDF5/include
    

    and nothing changed...


  • Lifetime Qt Champion

    @Please_Help_me_D Are you sure the missing symbols are in the lib you added? You should check that and add other libs if needed. Also, you added debug version of the lib: do you build your app in debug or release mode?



  • @jsulm How to check the missing symbols are in the or not?
    I build debug version of libraries and I try to lauch Qt in debug mod. What is the difference between debug version of libraries and release? Can I build library in debug mod and launch it in Qt in release mod?
    Sorry for so many questions but I need to understand the basics of programming in Qt.


  • Lifetime Qt Champion

    @Please_Help_me_D said in Can't add HDF5 library in empty Qt-project:

    How to check the missing symbols are in the or not?

    Don't know how to do it on Windows, on Linux there is nm tool.
    Take a look at https://stackoverflow.com/questions/305287/how-to-see-the-contents-of-windows-library-lib

    On Windows you should not mix debug and release binaries. But since you're building in debug mode it should be fine.


  • Lifetime Qt Champion

    Seeing the numbers of .dll files in your bin folder, you shall have the same number of .lib files somewhere. I suspect that you are not linking enough of the hdf5 libraries.



  • @jsulm I followed the link you gave and output of dumpbin command:

    dumpbin /EXPORTS hdf5_cpp_D.lib
    

    is inside the link (let me know if it works): output_from_dumpbin
    I don't know know yet how to read it.

    @SGaist I looked to the lib folder and the number of libraries doesn't match to the number of .dll in bin folder. I also tried to add all the libraries:

    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/lhdf5_cpp_D.lib"
    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/lhdf5_D.lib"
    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/hdf5_hl_cpp_D.lib"
    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/hdf5_hl_D.lib"
    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/hdf5_tools_D.lib"
    
    INCLUDEPATH += C:/apps/MSVC_apps_debug/HDF5/include
    DEPENDPATH += C:/apps/MSVC_apps_debug/HDF5/include
    

    but the errors don't change
    lib.png



  • @Please_Help_me_D said in Can't add HDF5 library in empty Qt-project:

    LIBS += "-LC:/apps/MSVC_apps_debug/HDF5/lib/lhdf5_D.lib"

    This is not a correct syntax. Please try

    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/hdf5_D.lib"

    and so on



  • @Konstantin-Tokarev I just tried:

    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/lhdf5_cpp_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/lhdf5_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/hdf5_hl_cpp_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/hdf5_hl_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/hdf5_tools_D.lib"
    
    INCLUDEPATH += C:/apps/MSVC_apps_debug/HDF5/include
    DEPENDPATH += C:/apps/MSVC_apps_debug/HDF5/include
    

    I get an error:
    error: LNK1104: can't open file "C:\apps\MSVC_apps_debug\HDF5\lib\lhdf5_cpp_D.lib"
    Does it depend that libraries were built with GUI Cmake and the project I run with qmake?



  • @Please_Help_me_D You have an error in your path: file name is hdf5_cpp_D.lib while you are using lhdf5_cpp_D.lib



  • @Konstantin-Tokarev i'm sorry, my mistake. I changed it to the correct name and the errors now are:
    main.obj: -1: error: LNK2001: unresolved external character "" public: static class H5 :: FileAccPropList const & const H5 :: FileAccPropList :: DEFAULT "(? DEFAULT @ FileAccPropList @ H5 @@ 2AEBV12 @ EB)"
    main.obj: -1: error: LNK2001: unresolved external character "" public: static class H5 :: FileCreatPropList const & const H5 :: FileCreatPropList :: DEFAULT "(? DEFAULT @ FileCreatPropList @ H5 @@ 2AEBV12 @ EB)"
    etc...
    debug \ HDF5.exe: -1: error: LNK1120: unresolved external elements: 6



  • Make sure that all paths correspond to existing files.Find in which library H5 :: FileAccPropList is defined



  • @Konstantin-Tokarev I did

    dumpbin /EXPORTS each_of_my_labrary
    

    and I only found that FileAccPropList belongs to hdf5_cpp_D.lib.
    One thing seemed to me interesting... When I built HDF5 libraries there was an option to include C++ libraries and I included them. Now output from dumpbin C and C++ libraries are very different. Here are few lines of dumpbin C.lib:

    Microsoft (R) COFF/PE Dumper Version 14.16.27030.1
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    Dump of file C:\apps\MSVC_apps_debug\HDF5\lib\hdf5_D.lib
    
    File Type: LIBRARY
    
         Exports
    
           ordinal    name
    
                      H5AC_BT
                      H5AC_BT2_HDR
                      H5AC_BT2_INT
                      H5AC_BT2_LEAF
                      H5AC_DRVRINFO
                      H5AC_EARRAY_DBLK_PAGE
                      H5AC_EARRAY_DBLOCK
                      H5AC_EARRAY_HDR
    

    And here are few lines of dumpbin C++.lib:

    Microsoft (R) COFF/PE Dumper Version 14.16.27030.1
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    Dump of file C:\apps\MSVC_apps_debug\HDF5\lib\hdf5_cpp_D.lib
    
    File Type: LIBRARY
    
         Exports
    
           ordinal    name
    
                      ??0AbstractDs@H5@@IEAA@XZ (protected: __cdecl H5::AbstractDs::AbstractDs(void))
                      ??0AbstractDs@H5@@QEAA@AEBV01@@Z (public: __cdecl H5::AbstractDs::AbstractDs(class H5::AbstractDs const &))
                      ??0ArrayType@H5@@QEAA@AEBV01@@Z (public: __cdecl H5::ArrayType::ArrayType(class H5::ArrayType const &))
                      ??0ArrayType@H5@@QEAA@AEBVDataType@1@HPEB_K@Z (public: __cdecl H5::ArrayType::ArrayType(class H5::DataType const &,int,unsigned __int64 const *))
                      ??0ArrayType@H5@@QEAA@AEBVH5Location@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z (public: __cdecl H5::ArrayType::ArrayType(class H5::H5Location const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &))
                      ??0ArrayType@H5@@QEAA@AEBVH5Location@1@PEBD@Z (public: __cdecl H5::ArrayType::ArrayType(class H5::H5Location const &,char const *))
                      ??0ArrayType@H5@@QEAA@XZ (public: __cdecl H5::ArrayType::ArrayType(void))
                      ??0ArrayType@H5@@QEAA@_J@Z (public: __cdecl H5::ArrayType::ArrayType(__int64))
    

    How do you think, maybe C++ libraries were installed incorretly?



  • @Konstantin-Tokarev @SGaist @jsulm as you suspected the problem was that used wrong libraries. Those libraries whose names begin with lib are static. And those who don't those are shared (information from HDFGroup web-site, see picture).
    Previously I tried to include shared libraries and they don't work (don't know why). Now I use static libraries and they work.
    So I use the followng lines (it works):

    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/libhdf5_cpp_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/libhdf5_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/libhdf5_hl_cpp_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/libhdf5_hl_D.lib"
    LIBS += "C:/apps/MSVC_apps_debug/HDF5/lib/libhdf5_tools_D.lib"
    
    INCLUDEPATH += C:/apps/MSVC_apps_debug/HDF5/include
    DEPENDPATH += C:/apps/MSVC_apps_debug/HDF5/include
    

    Can you give me advise why shared libraries don't work? How should I decide whether to use shared or static libraries?
    HDF5.png


  • Lifetime Qt Champion

    So you tried to link to .dll files which are the shared libraries but not what you use to link to on Windows.

    .lib files can be either the static version of the libraries or an "import file" used to tell the linker what symbols it will have from the library. The usual way to know which type it is is by looking at its size. Small sizes suggest that you have the import file while bigger sizes suggest static libraries.



  • @SGaist thank you for information about the weight of static and shared libraries. One of my shared library weighs 380 kb and the same static library weighs 33 Mb.
    I opened them with help of 7zip and I saw that shared .lib-file include .dll files, and static .lib-file includes .obj files (see picture).
    Is there a connection between libraries .lib and .exe files and .dll files that are in the bin folder?static_shared.jpg


  • Lifetime Qt Champion

    I was talking about the .lib files themselves.

    .dll are in any shared libraries.



  • I encountered a problem that when I build HDF5 without ZLIB I can run HDF5 library in Qt (as static library for example). But when building HDF5 with ZLIB=on then I can run HDF5 only as dynamic library and still I get error: LNK2001: unresolved external character "H5T_STD_I32BE_g" when I set format for my saving data like integer 32 big endian (or any other data formats). The other functionality works properly (for example I can create empty HDF5-files and add groups in them etc). What maybe the reason of this strange behaviour?
    ZLIB, HDF5 builded in DEBUG mode.
    If my HDF5 library depends on ZLIB library then in QMake should I add some strings about ZLIB?



  • I added ZLIB library to the QMake and it worked :)



  • To the New Yaer event I got SSD-disk :)
    So I decided to install Windows 10 x64 and now I have disk C:\ on SSD and HDD stores all my data from previous installed Windows 7 x64.

    I have strange situation... When I run Qt project that uses HDF5 library and this library is on old HDD then I can normally run it.
    If I copy HDF5 library to the SSD then I get the following error:
    error: C1083: Cannot open include file: 'hdf5.h': No such file or directory

    I use:

    #include "hdf5.h"
    

    and in .pro file I have:

    LIBS += С:/apps/MSVC_apps_debug/HDF5_1106/lib/libhdf5_D.lib \
            С:/apps/MSVC_apps_debug/HDF5_1106/lib/libhdf5_hl_D.lib \
            С:/apps/MSVC_apps_debug/ZLIB/lib/libzlib_D.lib
    
    INCLUDEPATH += С:/apps/MSVC_apps_debug/HDF5_1106/include \
                   С:/apps/MSVC_apps_debug/ZLIB/include
    DEPENDPATH += С:/apps/MSVC_apps_debug/HDF5_1106/include \
                  С:/apps/MSVC_apps_debug/ZLIB/include
    

    By the way it doesn't depend if I recompile HDF5 library with installation folder on C:/ or just copy it from E:/ to C:/ (I mean copy from HDD to SSD). In both cases I get the same error.

    Why Qt can't see this header file in include folder?


  • Lifetime Qt Champion

    Did you check the build log to see if the paths you added are used ?



  • @SGaist As far as I see yes. I marked it with bold style.
    The compilator output uses backslashes () and I use slash (/) when pointing a directory. In Windows 7 slashes worked normally, couldn't that be a reason in Windows 10?

    21:37:47: Launching: «C:\Qt\Tools\qtcreator-4.11.0\bin\jom.exe»
    C:\Qt\Tools\qtcreator-4.11.0\bin\jom.exe -f Makefile.Debug
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:/apps/MSVC_apps_debug/HDF5_1106/include -IС­:/apps/MSVC_apps_debug/ZLIB/include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\checkandwritehdf5.obj.4376.15.jom
    checkandwritehdf5.cpp
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:/apps/MSVC_apps_debug/HDF5_1106/include -IС­:/apps/MSVC_apps_debug/ZLIB/include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\readsegy.obj.4376.31.jom
    readsegy.cpp
    c:\users\tasik\documents\qt_projects\readsegy\readsegy.h(5): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:/apps/MSVC_apps_debug/HDF5_1106/include -IС­:/apps/MSVC_apps_debug/ZLIB/include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\main.obj.4376.15.jom
    main.cpp
    c:\users\tasik\documents\qt_projects\readsegy\readsegy.h(5): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    c:\users\tasik\documents\qt_projects\readsegy\checkandwritehdf5.h(2): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\checkandwritehdf5.obj] Error 2
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\main.obj] Error 2
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\readsegy.obj] Error 2
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile [debug] Error 2


  • Lifetime Qt Champion

    That's surprising... the slash/backslash conversion should be handled automatically for you.

    What happens if you uses backslashes in your .pro file ?



  • @SGaist Now I wrote:

    LIBS += С:\apps\MSVC_apps_debug\HDF5_1106\lib\libhdf5_D.lib \
            С:\apps\MSVC_apps_debug\HDF5_1106\lib\libhdf5_hl_D.lib \
            С:\apps\MSVC_apps_debug\ZLIB\lib\libzlib_D.lib
    
    INCLUDEPATH += С:\apps\MSVC_apps_debug\HDF5_1106\include \
                   С:\apps\MSVC_apps_debug\ZLIB\include
    DEPENDPATH += С:\apps\MSVC_apps_debug\HDF5_1106\include \
                  С:\apps\MSVC_apps_debug\ZLIB\include
    

    and I get the same error:
    C:\Users\tasik\Documents\Qt_Projects\ReadSegy\checkandwritehdf5.h:2: ошибка: C1083: Cannot open include file: 'hdf5.h': No such file or directory

    The compilator output:
    22:10:58: Запускается: «C:\Qt\Tools\qtcreator-4.11.0\bin\jom.exe»
    C:\Qt\Tools\qtcreator-4.11.0\bin\jom.exe -f Makefile.Debug
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:\apps\MSVC_apps_debug\HDF5_1106\include -IС­:\apps\MSVC_apps_debug\ZLIB\include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\checkandwritehdf5.obj.7080.0.jom
    checkandwritehdf5.cpp
    c:\users\tasik\documents\qt_projects\readsegy\checkandwritehdf5.h(2): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:\apps\MSVC_apps_debug\HDF5_1106\include -IС­:\apps\MSVC_apps_debug\ZLIB\include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\main.obj.7080.16.jom
    main.cpp
    c:\users\tasik\documents\qt_projects\readsegy\readsegy.h(5): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\checkandwritehdf5.obj] Error 2
    cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc /Fddebug\ReadSegy.vc.pdb -DUNICODE -D_UNICODE -DWIN32 -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DWIN64 -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I..\ReadSegy -I. -IС­:\apps\MSVC_apps_debug\HDF5_1106\include -IС­:\apps\MSVC_apps_debug\ZLIB\include -IC:\Qt\5.12.6\msvc2017_64\include -IC:\Qt\5.12.6\msvc2017_64\include\QtCore -Idebug -IC:\Qt\5.12.6\msvc2017_64\mkspecs\win32-msvc -Fodebug\ @C:\Users\tasik\AppData\Local\Temp\readsegy.obj.7080.16.jom
    readsegy.cpp
    c:\users\tasik\documents\qt_projects\readsegy\readsegy.h(5): fatal error C1083: Cannot open include file: 'hdf5.h': No such file or directory
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\readsegy.obj] Error 2
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile.Debug [debug\main.obj] Error 2
    jom: C:\Users\tasik\Documents\Qt_Projects\build-ReadSegy-Desktop_Qt_5_12_6_MSVC2017_64_bit-Debug\Makefile [debug] Error 2

    Both variants are possible? That is useful because I always forget the way I should use slash or backslash :)


  • Lifetime Qt Champion

    Well, by default use forward slashes. Qt does the conversion and you even have specific functions in QDir for converting if you need the native version.

    Can you show the exact path where the header is located including the file name ?



  • @SGaist ok
    i write from my phone now but it is here:
    C:/apps/MSVC_debug/HDF5_1106/lib/libhdf5_D.lib
    C:/apps/MSVC_debug/HDF5_1106/include

    I probably mistaken a little but there is no spaces in path.
    A little bit later i can copy the correct path



  • @SGaist On SSD disk include directory that contains "hdf5.h" is in:
    C:\apps\MSVC_apps_debug\HDF5_1106\include\hdf5.h

    And on HDD disk (that used to be the C:\ folder when I had Windows 7):
    E:\apps\MSVC_apps_debug\HDF5_NO_MPI\include\hdf5.h


  • Lifetime Qt Champion

    Might be a silly question but do you have proper read access to these folders ?

    One other thing to try, create a new default project and just put the minimal needed to use hdf5.



  • @SGaist yes I have permission. And yesterday I've tried to create new project and copy the content to it but it did't solve the problem.

    Few minuts ago I just tried the following. I have two QtCreator: one is standart that comes with Qt (compiled with MSVC 32 C:\Qt\Tools\QtCreator) and other I installed to the folder C:\Qt\Tools\qtcreator-4.11.0 that is compiled with MSVC 64. Yesterday I was trying to use the one that compiled with MSVC 64. But now I tried to use standart QtCreator x32 and it runs the apllication without problem. After that I launched QtCreator x64 and it runs too.

    I don't know why this happened but I think there is two possible reasons:

    1. I always used wrong path to the library and include directory (I checked it many times but still such things sometimes happen)
    2. something that is connected with the build type of QtCreator x32 or x64 (or how they were installed or kits). Both of them of version 4.11.0

  • Lifetime Qt Champion

    What I meant was to not use anything from your other project so you would have something completely independent.

    As for Qt Creator, its architecture has nothing to do with the architecture of the Qt version you are using.

    Anyway, glad you have it working now !



  • @SGaist Thank you for the time you spent!


Log in to reply