2015-04-10 2 views
1

Я пытаюсь скомпилировать и связать HDF5 с программой Fortran, но я получаю ошибку во время выполнения. Я внимательно следил за процедурой, описанной в ответе на этот вопросИспользовать HDF5 от minGW на окнах

Use HDF5 from intel fortran on windows

я настроил PATH в переменных окружения, а не устанавливать их в Visual Studio. Я переместил все сгенерированные файлы .mod и .lib в папки mod и lib в папке проекта.

из командной строки, мой компилятор конфигурации выглядит

gfortran --version 
GNU Fortran (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 4.9.2 
gmake --version 
GNU Make 3.81 

И мой Makefile выглядит

ifdef SystemRoot 
    PATHSEP2 = \\ 
else 
    PATHSEP2 =/
endif 
PS = $(strip $(PATHSEP2)) 

OBJ_DIR = obj 
MOD_DIR = mod 
LIB_DIR = lib 

FC  = gfortran 
FCFLAGS = -I$(MOD_DIR) -g -Wall 
FLFLAGS = -I$(MOD_DIR) -L$(LIB_DIR) -l$(LIB_DIR)hdf5_fortran 

SRCS_F = testHDF5.f90 

TARGET = testHDF5 

all: $(TARGET) 

testHDF5: testHDF5.f90 
    $(FC) -o [email protected] testHDF5.f90 $(FLFLAGS) 

$(OBJ_DIR)$(PS)%.o: %.f90 
    $(FC) $(FCFLAGS) -c -o [email protected] $< 

Я изменил hdf5_fortran.lib к libhdf5_fortran.lib из-за того, что я прочитал здесь

http://www.mingw.org/wiki/specify_the_libraries_for_the_linker_to_use

Когда я бегу gmake, я получить

gfortran -o testHDF5 testHDF5.f90 -Imod -Llib -llibhdf5_fortran 

И когда я пытаюсь запустить исполняемый файл, появляется всплывающее окно, которое говорит «Приложение не удалось правильно запустить (0xc000007b). Нажмите кнопку OK, чтобы закрыть приложение.»

Этой ссылку

http://www.solveinweb.com/solved-the-application-was-unable-to-start-correctly-0xc000007b-click-ok-to-close-the-application/

предполагает, что это происходит из-за несовместимости 32-разрядного на 64-бит. Я использую 64-битную машину, и Я загрузить 32-разрядную версию CMake с, но только потому, что, кажется, не быть доступны версии для 64-битных машин. Кроме того, эта ссылка

http://www.cmake.org/pipermail/cmake/2010-September/039375.html

предполагает, что он не должен Итак, мой вопрос в том, где я ошибся? Есть ли вопиющие ошибки с тем, что я показал до сих пор?

UPDATE:

я узнал, что ошибка времени выполнения была из-за не указав путь, в этом случае HDF5_DIR. В документе USING_HDF5_CMAKE, он говорит, чтобы указать переменную окружения

HDF5_DIR=C:/Program Files/HDF_Group/HDF5/1.8.x/cmake/hdf5 

исправляющие проблему применения врезаться в самом начале. Но теперь, я получаю ошибку

HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 0: 
    #000: C:\Users\Charlie\Downloads\CMake\hdf5-1.8.14\src\H5D.c line 167 in H5Dcr 
eate2(): not a datatype ID 
    major: Invalid arguments to routine 
    minor: Inappropriate type 
HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 0: 
    #000: C:\Users\Charlie\Downloads\CMake\hdf5-1.8.14\src\H5D.c line 415 in H5Dcl 
ose(): not a dataset 
    major: Invalid arguments to routine 
    minor: Inappropriate type 

Я полагаю, первая ошибка

HDF5-DIAG: Error detected in HDF5 (1.8.14) thread 0: 
    #000: C:\Users\Charlie\Downloads\CMake\hdf5-1.8.14\src\H5D.c line 167 in H5Dcr 
eate2(): not a datatype ID 
    major: Invalid arguments to routine 
    minor: Inappropriate type 

Является наиболее важным, поскольку это может вызвать более поздние. По этой теме

http://hdf-forum.184993.n3.nabble.com/HDF5-Fortran-Fail-to-execute-of-a-basic-F90-program-td4026778.html

Предполагается, что тот же компилятор используется для создания библиотеки, как создание исходного кода на языке Fortran (если я не ошибаюсь). Во время сборки, использующей CMake, я указал на использование MinGW, который, как я полагаю, используется во время обеих сборщиков, правильно?

Опять же, любая помощь на это очень ценится.

ответ

0

Я связался hdf5 поддержки в отношении этой проблемы

Platform/OS: 
Windows 7 

Product/Version: 
HDF5, Latest download 

Description: 
Hi, I'm having trouble getting HDF5 working on my windows machine with fortran. Below is an outline of what I've done, and after I show the error I get. 

1.1) Download and install CMake, Windows (Win 32 Installer) from http://www.cmake.org/download/ 

1.2) I did not add CMake to the system PATH, because it was too long. 

1.3) I manually added "C:/Program Files (x86)/CMake/bin" to the PATH (for user) 
in computer->properties->advanced system settings->environment variables 2.1) Download and install HDF5 

2.2) I manually added "C:/Program Files/HDF Group/HDF5/1.8.14/cmake/hdf5" to the PATH (for user) in computer->properties->advanced system settings->environment variables 

3.1) I created a new, empty, directory (/Project/) and copied HDF5Examples-0.1.1-Source.zip and HDF518 Examples.CMAKE to it. 3.1) Downloaded hdf5-CMakeWindows.zip from http://www.hdfgroup.org/HDF5/release/cmakebuild.html and unzipped 
file to find a folder named CMake. 

3.2) Opened CMake GUI, set Source Code Dir = CMake/hdf5-1.8.14 folder 

3.3) Set Where to build binaries Dir = /Project/ (project folder containing HDF5Examples-0.1.1-Source.zip and HDF518 Examples.CMAKE) 

4.1) In the CMake GUI, I pressed Configure, (selected MinGW and default from the 1st and 2nd drop down respectively), Configure. Checked BUILD_SHARED_LIBS and HDF5_BUILD_FORTRAN. Configure, configure, generate. 

4.2) I navigated to the bin directory of the CMake folder and copied the library files, .dll files, and .mod files to an empty test folder (/test_HDF5/), where I separated them into lib/mod folders. 

4.3) I created a makefile which, if done correctly, linked the .lib files. 

4.4) I compiled the files and linked the libraries and there seemed to be no errors, nor warnings. When running the testHDF5.exe I received the following error: The application was unable to start correctly (0xc000007b). Click OK to close the application. I believe this is a configuration issue, and I'm not sure how to resolve it. 

I'm very new with linking libraries and I'm just trying to use HDF5 as a data exporting tool with my existing fortran code. Any help is greatly appreciated. 

Sincerely, Charlie Kawczynski 

И их ответ был, по состоянию на 14 апреля 2015 года, что MinGW не поддерживается:

Hi Charlie, 

We do not support MinGW at this time. The developer had tried 
building with Fortran and was not able to get it to work. 

We do have a user forum where you can post questions. However, others 
have posted issues about MinGW and Fortran that have not been resolved. :(

For information on the HDF Forum, see: 
    http://www.hdfgroup.org/services/community_support.html 

-Barbara 

Надеется, что это помогает другим.

Смежные вопросы