Форум » [x]Harbour » Вопрос о сборке Harbour для MultiThread-режима » Ответить

Вопрос о сборке Harbour для MultiThread-режима

PSP: Подскажите, пожалуйста, по сабжу. Имеем исходники Harbour (nightly sources). Как я понял, опции компилятору указаны в файле config\win\bcc.cf (для сборки под винду с помощью bcc). В этом файле есть строка: CFLAGS = -q -tWM. Имеет ли опция -tWM отношение к MT-режиму? Судя по тому, что в примерах из папки tests\mt функция hb_mtvm() возвращает .F., harbour собран для обычного режима. Что еще (и где) нужно указать компилятору, чтобы собрать для MT-режима? Спасибо.

Ответов - 5

Петр: PSP пишет: Имеет ли опция -tWM отношение к MT-режиму? Судя по тому, что в примерах из папки tests\mt функция hb_mtvm() возвращает .F., harbour собран для обычного режима. Имеет. Не ройте так глубоко Посмотрите есть ли у вас библиотека hbvmmt.lib. Если есть - все хорошо и вы можете создавать MT программы. hb_mtvm() скорее всего возращает .f. потому что вы не подключили при сборке тестовой программы hbvmmt.lib. Чтобы подключить эту библиотеку достаточно hbmk2 передать параметр -mt hbmk2 test.prg -mt test.prg PROCEDURE main ?hb_mtvm()

PSP: Да, вроде работает. Спасибо! :) А скажите, Петр: если в проекте одновременно линкуются библиотеки cw32.lib и cw32mt.lib, это может привести к конфликтам? Или на этапе линковки все линкер разруливает правильно?

PSP: И еще вопрос: есть уже готовые библиотеки функций, используемые в проекте. Их нужно пересобирать в МТ?


Петр: PSP пишет: если в проекте одновременно линкуются библиотеки cw32.lib и cw32mt.lib, это может привести к конфликтам? Или на этапе линковки все линкер разруливает правильно? В случае с Harbour доверьтесь hbmk2. Он соберет для вас все правильно и exe и lib (или почти правильно - это я о pcode dll), для этого его и создали. В общем же случае линкер "старается" разрулить ситуацию, но для подстраховки выдает предупреждающее уведомление (по крайней мере так делают bcc, msvc, если их только не "попросили" не беспокоить с помощью ключей или pragma) чтобы программист еще раз хорошенько подумал, что делает. есть уже готовые библиотеки функций, используемые в проекте. Их нужно пересобирать в МТ? Здесь однозначного ответа нет. И дело даже не в пересборке. Нужно понимать, что просто перекомпилирование программы и связывание ее с hbvmmt не делает вашу программу многопоточной автоматически. Нужно сделать анализ кода. Возможно нужен редизайн библиотеки, а возможно и менять ничего не нужно.

PSP: Спасибо. В общих чертах понятно. :)



полная версия страницы