2015-04-05 2 views
1

Я пытаюсь скомпилировать в VTK5.10 в windows cygwin, и я получаю следующие сообщения об ошибках. Любое разрешение:Проблема LS_DYNA_Family в компиляции VTK в cygwin

[ 27%] Built target vtkexoIIc 
    [ 27%] Building CXX object Utilities/LSDyna/CMakeFiles/LSDyna.dir/LSDynaFamily.cxx.o 
    /cygdrive/c/cygwin64/VTK5.10.1/Utilities/LSDyna/LSDynaFamily.cxx: In function ‘int {anonymous}::LS_DYNA_STAT(const char*, {anonymous}::stat64&)’: 
    /cygdrive/c/cygwin64/VTK5.10.1/Utilities/LSDyna/LSDynaFamily.cxx:44:25: error: invalid use of incomplete type ‘struct {anonymous}::stat64’ 
     return stat64(fname,&s); 
          ^
    /cygdrive/c/cygwin64/VTK5.10.1/Utilities/LSDyna/LSDynaFamily.cxx:41:44: error: forward declaration of ‘struct {anonymous}::stat64’ 
    int LS_DYNA_STAT(const char* fname, struct stat64& s) 
               ^
    /cygdrive/c/cygwin64/VTK5.10.1/Utilities/LSDyna/LSDynaFamily.cxx: In member function ‘int LSDynaFamily::ScanDatabaseDirectory()’: 
    /cygdrive/c/cygwin64/VTK5.10.1/Utilities/LSDyna/LSDynaFamily.cxx:229:17: error: aggregate ‘{anonymous}::stat64 st’ has incomplete type and cannot be defined 
     struct stat64 st; 
        ^
    Utilities/LSDyna/CMakeFiles/LSDyna.dir/build.make:54: recipe for target 'Utilities/LSDyna/CMakeFiles/LSDyna.dir/LSDynaFamily.cxx.o' failed 
    make[2]: *** [Utilities/LSDyna/CMakeFiles/LSDyna.dir/LSDynaFamily.cxx.o] Error 1 
    CMakeFiles/Makefile2:2418: recipe for target 'Utilities/LSDyna/CMakeFiles/LSDyna.dir/all' failed 
    make[1]: *** [Utilities/LSDyna/CMakeFiles/LSDyna.dir/all] Error 2 
    Makefile:127: recipe for target 'all' failed 
    make: *** [all] Error 2 
+0

показать нам код –

ответ

0

Решила проблему. Я думаю, проблема связана с некоторыми условиями if_else, связанными с некоторыми настройками для других сред, таких как POSIX, FreeBSD. Я не эксперт, так что хитом и пробной версией я прокомментировал некоторые строки в файле LSDynaFamily.cxx.

линия номер 44:

//return stat64(fname,&s); 

Часть линии номер 227 и далее был модифицирован, как показано ниже:

//#elif USE_STAT_64 
    //struct stat64 st; 

Part of line number 240: 
#if defined (WIN32) && VTK_SIZEOF_ID_TYPE==8 
    struct __stat64 st; 
//#elif USE_STAT_64 
    //struct stat64 st; 
#else 
    struct stat st; 
#endif 
    while (tryAdapt >= 0) 
    { 
    tmpFile = vtkLSGetFamilyFileName(this->DatabaseDirectory.c_str(), 
             this->DatabaseBaseName, 
             adaptLevel, 
             filenum); 
    /* if (LS_DYNA_STAT(tmpFile.c_str(), st) == 0) 
     { 
     if (adapted) 
     { 
     this->Adaptations.push_back((int)this->Files.size()); 
     adapted = false; 
     } 
     this->Files.push_back(tmpFile); 
     this->FileSizes.push_back(st.st_size); 
     this->FileAdaptLevels.push_back(adaptLevel); 
     tryAdapt = 1; 
     ++filenum; 
     } 
    else 
     {*/ 
     --tryAdapt; 
     ++adaptLevel; 
     filenum = 0; 
     adapted = true; 
    // } 
    } 
    return this->Files.size() == 0; 
    } 
Смежные вопросы