Код, написанный на C++ с библиотеками LapackE и MPI, компилируется и отлично работает в Windows, где я использую GNU C++ 4.9.2.Скомпилированный код C++/LapackE в Windows, но идентичный код не скомпилирован в Linux
Перенос этого кода на сервер Linux (CentOS) не удается скомпилировать! Машина GNU C++ на Linux - это 4.4.7. В обоих случаях я использовал одинаковые файлы заголовков LapackE. MPI хорошо работает на машине Linux.
При проверке выходных файлов препроцессора на обеих машинах, я могу связать сообщения об ошибках в следующих ситуациях, когда сложные декларации в исходном коде были заменены _Complex. Вот пример объявления сложного динамического ГАМИЛЬТОНИАНА массива, который имеет проблемы при компиляции на Linux:
В ORIGNIAL ИСТОЧНИК: lapack_complex_double * ГАМИЛЬТОНИАНА;
В ОКНАХ PREPROC. ФАЙЛ (работает хорошо): _lapack_complex_double * HAMILTONIAN;
В LINUX PREPROC. FILE (не скомпилируется): double _Complex * HAMILTONIAN;
Это может быть проблема, связанная с различными версиями GCC?
Я пробовал #define Комплекс комплекса, но в конце концов это не помогло.
Некоторые сообщали о проблеме с совместимостью комплекса C99 _Complex и C++: possible similar problem.
Пожалуйста, помогите. Благодаря!
Очевидным ответом является то, что один из этих файлов заголовков, которые включены из '/ home', использует что-то от' 'и' "minMathsForEPM.h" , но не могут явно «включать» самих себя. Таким образом, вы должны сделать это сами. –
@ Сэм Варшавчик: сложная вещь находится в последнем абзаце, если в «рабочем коде» (втором коде) вы добавляете свою программу, то она не работает, и все ошибки связаны с объявлениями сложных величин. Этого не происходит, когда вы компилируете его в Windows. – Boki
Вы все еще не объяснили, что такое «проблема». В великой схеме вещей повторное включение включенных файлов - это тривиальный вопрос, который может быть отправлен через несколько секунд. «Проблема», похоже, уже решена: измените порядок включенных файлов. –