10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
1 | |
Ошибка Nonshared DATA segment required15.09.2015, 11:02. Показов 8266. Ответов 10
Метки нет Все метки)
(
Builder XE8, Windows 10.
При старте нового проекта и включении опции Codeguard после запуске программы возникает ошибка "Nonshared DATA segment required". Если при этом отключить опцию Link with Dynamic RTL, то ошибки нет, но работать с отключенными библиотеками не хотелось бы. Кто-то сталкивался с подобной проблемой? Решение вроде бы нашел на форуме Embarcadero, но не понимаю как его исполнить. Вот английский текст:
0
|
|
15.09.2015, 11:02 | |
Ответы с готовыми решениями:
10
Ошибка "Nonshared DATA segment required" при включении CodeGuard Ошибка в c++ builder 6 Unsupported 16-bit segment(s) in module MYMODULE Ошибка E2277 Lvalue required Ошибка Structure required on left side of . or .* |
1406 / 569 / 127
Регистрация: 31.10.2011
Сообщений: 1,957
|
|
16.09.2015, 01:47 | 2 |
Нитонисе, не совсем уверен, но подозреваю, что это находится здесь
0
|
1406 / 569 / 127
Регистрация: 31.10.2011
Сообщений: 1,957
|
|
16.09.2015, 01:54 | 3 |
если бы кто еще подсказал какие флаги компилятора как включать,
например, через прагму (ну или через опции поекта), было бы вообще супер ![]()
0
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
16.09.2015, 09:59 [ТС] | 4 |
Здесь только переключатель true/false, который не влияет на ошибку - она все также появляется.
0
|
Супер-модератор
![]() ![]() |
|
16.09.2015, 13:59 | 5 |
Правильно. -dc - тоже переключатель. Либо он есть, либо его нет, а есть -dw, который заставляет писать строки во writable сегмент данных. И опция -dc включается именно там, где показано выше, вот, посмотри: C++ Compiler Advanced, а самом низу страницы. Там есть и ключи для компилятора ком. строки, которым соответствуют те или иные настройки.
Если это не влияет на работоспособность твоей программы - то ты нашел неподходящее для своего случая решение.
2
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
16.09.2015, 14:34 [ТС] | 6 |
volvo, ок, понял. Однако по умолчанию эти две опции и так были отключены, так что по идее они и не могли быть причиной ошибки. На всякий случай попробовал со включенными - не работает.
Если я правильно понял такая ошибка должна быть у всех пользователей Win8 и Win10. Она возникает и при создании нового приложения, если установить Project->Options->C++ Compiler->Debugging->Enable Codeguard = true и Project->Options->C++ Linker->Link with Dynamic RTL = true. Я использую опцию Codeguard для отслеживания ошибок освобождения динамически выделяемой памяти. Есть ли какая-то альтернатива этому инструменту?
0
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
16.09.2015, 15:29 [ТС] | 8 |
Так у меня CG включен все время. Я же написал пару строк кода - запустил программу на исполнение, чтобы посмотреть результат. CG выдает сообщения, если где-то не освобождается динамически выделяемая память. Сразу же начинаю искать причину и устранять. Это же удобнее, чем сначала работать без CG, а потом выявлять утечки памяти при глобальном тестировании.
0
|
Супер-модератор
![]() ![]() |
|
16.09.2015, 15:33 | 9 |
Ну так пока CG включен - не включай вторую галку.
И потом. То, что у тебя сразу ничего не находится - не значит, что потом не найдется ничего, при общем тестировании. Программу надо гонять долго и упорно, чтобы выполнялись все участки кода (статического анализа кода в Билдере нет, юнит-тесты ты тоже, как я понимаю, не используешь), и только потом уже принимать решение об отключении отладочных средств. Вот в этот момент и включишь вторую галку.
0
|
10 / 10 / 4
Регистрация: 12.10.2013
Сообщений: 249
|
|
16.09.2015, 15:47 [ТС] | 10 |
Сейчас так и делаю. Просто я раньше всегда работал с Dynamic RTL, а сейчас этой опцией не могу пользоваться, так как CG для меня важнее.
Да. Но большинство ошибок все же отлавливает.
0
|
1406 / 569 / 127
Регистрация: 31.10.2011
Сообщений: 1,957
|
|
17.09.2015, 02:02 | 11 |
volvo, спасибо за ссылку на C++ Compiler Advanced
0
|
17.09.2015, 02:02 | |
Помогаю со студенческими работами здесь
11
Ошибка "partner index segment №1 has incompatible data type" сегмент индекса партнера №1 имеет несовместимый тип данных Error 49: data segment too large
Ошибка при создании объекта '\controllers\\'.$segment Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |