Добрый день!
Как-то видел мнение, что Watcom + OW хорошо совместимы, если пользоваться только языком Си. Это как раз мой случай. Программы и библиотеки действительно линкуются между собой. Сначала были проблемы из за того что watcom и open watcom по-разному понимали размеры структур, но pragma pack вылечил эту проблему.
Использую OW 1.9 докрученный до поддержки QNX 4.25 по этой инструкции:
http://forum.kpda.ru/index.php/topic,269.0.htmlУ меня была необходимость собрать библиотеку для работы с SQLite при помощи OW 1.9 на Windows (в моем случае Wine). Затем я линкую ее с кодом на билд сервере с обычным Watcom 10.6.
Допустимо ли это?В основном вроде всё работает, но порой, когда отработает/вызывается код библиотеки, скомпилированный под OW 1.9 то начинаются падения. Локализовав падения и закомментировав строки - падения возникают уже в другом месте. Это явные повреждения памяти, библиотека на OW 1.9 и W 10.6 понимают какие то структуры и смещения иначе, и затирают что-то друг другу!
Саму библиотеку на OW 1.9 отгонял под Linux+gcc при помощи мощного инструментария поиска утечек памяти и прочих сбоев, на сбои работы потоков и томе подобное (valgrind memcheck, gcc address sanitizer, gcc thread sanitizer, и прочие программы).
Пожалуйста, подскажите, в чем суть несовметисмости двух компиляторов и как ее преодолеть?
1) Есть ли OW 1.9 или новее сразу под QNX 4 непосредственно? Потому что автоматический билд сервер давно на W 10.6 и менять это мне нельзя, но использование его не позволяет мне работать с нужными библиотеками.
2) Поможет ли проблеме если всё собирать только одним компилятором? Только хочу попробовать этот вариант.
3) Может ли быть проблема в несовместимых "моделях памяти"?