Первый раз пришлось переносить программу написанную под Windows на Linux, не думал, что возникнит столько проблем! Первым делом я переопределил функции и стандартные типы, не поддерживаемые в Linux: #define AnsiString string; функции обработки имен файлов, получающие параметрами AnsiString в .h файле, заинклудил его ко всем .h файлам. Полученная программа откомпилирована под Borland Builder C++ 5 в ANSI и прекрасно работает!!!! Под Linux творятся чудеса: 1. Все компилируется под g++ 2. не работает!!! 3. с помощью Emacs + gdb выясняется что игнорируется (не вызывается вообще) конструктор статичеой переменной класса. Breakpoin на эту функцию класса ставится, но отладчик туда не входит. В статической переменной - указатель на объект (т. е. глобальная переменная) память выделяется оператором new <Класс>. Причем для других статических переменных классов такой проблемы нет. 4. программа ухитряется зациклиться при передаче параметра типа AnsiString (string после переопределения) в другой конструктор! Причем, breakpoint до вызова останавливает выполнение, а breakpoint внутри конструктора ставится, но gdb виснет до него. 5. Не знаю как в частях программы работающих хорошо, но в этих функциях GDB неверно показывает строку выполнения (в Emacs)- на две - три строки ниже, чем фактически находится процесс. Это видно по инициализации переменных. Хочу подчеркнуть, что под Windows компилируются те же файлы за исключением, что функция access()(проверка прав доступа) берется из библиотеки io.h а не из unistd.h и все благополучно работает!
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Переносы (2008)
- Форум перенос tomcat (2016)
- Форум Перенос драйвера (2012)
- Форум LaTeX переносы (2011)
- Форум Переносим LVM (2012)
- Форум перенос темы (2020)
- Форум Перенос драйверов (2019)
- Форум Перенос заголовков (2019)
- Форум Перенос программы (2014)
- Форум Перенос конфигов (2014)