информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят медSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Shared у тебя с точкой впереди или нет? 22.10.01 17:18  Число просмотров: 1130
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> буду настойчив:
> линк тот
> же:http://www.rsdn.ru/article/?baseserv/hookdll.xml
> цитата, следующий обзац (_выделено мной_):
> Любые переменные, объявленные вами в области действия
> #pragma, определяющей сегмент данных, будут размещены в
> этом сегменте данных, при _условии, что они
> инициализированы_. Если вы не укажете инициализатор,
> переменные будут размещены в сегменте данных по умолчанию,
> и #pragma не имеет силы.
Что подразумевается под инициализировании - об`явление переменной или нет?

> ПРИМЕЧАНИЕ
> В тот же момент оказывается, что эта особенность не
> позволяет использоватьмассивыобъектов C++ в разделяемом
> сегменте данных, т.к. в C++ вы не можете инициализировать
> массив пользовательских объектов (предполагается, что этим...
Ладно, пусть будет не массив, а некая переменная k:

#pragma data_seg("Shared")
int k;
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")


> по поводу > #pragma
> comment(linker,"/section:.Shared,rws")
> а Shared у тебя с точкой в переди или нет?
Всё равно что с точкой, что без неё , ошибка не исчезает..(все варианты перепробовал)

Я даже их пример скачал, но на нём ошибка такая же.
<programming>
[C++] Одна переменная для всех копий dll. 21.10.01 22:19  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Hi All!!!!!!
У меня такая проблема:

Есть dll и из неё вызывается ф-ия из разных приложений.
В dll`ке также есть переменная.
Необходимо чтобы во всех копиях dll (т.е вызывах ф-ии из разных приложений) переменные ссылалист на одну и туже область памяти.

Читал что нужно вставить в dll строчку :

#pragma data_seg(".SHAREDDATA")
.....Глобальные данные........
#pragma data_seg()

А в файл проекта .def:
SECTIONS
.SHAREDDATA Read Write Shared

--------------------------------------------

Но Linker ругается : пусто в разделе Section ф-ла .def

PS Мне просто не хочеться передавать адреса переменных через файл или реестр, это как-то не по профессиональному.
[C++] [C++ Warning] Unit1.cpp(20): W8094 Incorrect use of #pragma comment( [,"string"] ) 22.10.01 14:31  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Во блин, ругается:

[C++ Warning] Unit1.cpp(20): W8094 Incorrect use of #pragma comment( <type> [,"string"] )

..........................

Вот мой код:

#pragma data_seg("Shared")
char handle[100];
char lasthandle[100];
#pragma data_seg()
#pragma comment(linker,"/section:.Shared,rws")


ЗЫ У меня С++Bulder 5.0 - если это так важно. может чё в настройках поменять надо?
Shared у тебя с точкой впереди или нет? 22.10.01 14:56  
Автор: EHOT Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Вот мой код:
>
> #pragma data_seg("Shared")
> char handle[100];
> char lasthandle[100];
> #pragma data_seg()
> #pragma comment(linker,"/section:.Shared,rws")
>
буду настойчив:
линк тот же:http://www.rsdn.ru/article/?baseserv/hookdll.xml
цитата, следующий обзац (_выделено мной_):
Любые переменные, объявленные вами в области действия #pragma, определяющей сегмент данных, будут размещены в этом сегменте данных, при _условии, что они инициализированы_. Если вы не укажете инициализатор, переменные будут размещены в сегменте данных по умолчанию, и #pragma не имеет силы.

ПРИМЕЧАНИЕ
В тот же момент оказывается, что эта особенность не позволяет использоватьмассивыобъектов C++ в разделяемом сегменте данных, т.к. в C++ вы не можете инициализировать массив пользовательских объектов (предполагается, что этим должны заниматься их конструкторы по умолчанию).
-----------------конец цитаты-----------------------------
по поводу > #pragma comment(linker,"/section:.Shared,rws")
а Shared у тебя с точкой в переди или нет?
Shared у тебя с точкой впереди или нет? 22.10.01 17:18  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> буду настойчив:
> линк тот
> же:http://www.rsdn.ru/article/?baseserv/hookdll.xml
> цитата, следующий обзац (_выделено мной_):
> Любые переменные, объявленные вами в области действия
> #pragma, определяющей сегмент данных, будут размещены в
> этом сегменте данных, при _условии, что они
> инициализированы_. Если вы не укажете инициализатор,
> переменные будут размещены в сегменте данных по умолчанию,
> и #pragma не имеет силы.
Что подразумевается под инициализировании - об`явление переменной или нет?

> ПРИМЕЧАНИЕ
> В тот же момент оказывается, что эта особенность не
> позволяет использоватьмассивыобъектов C++ в разделяемом
> сегменте данных, т.к. в C++ вы не можете инициализировать
> массив пользовательских объектов (предполагается, что этим...
Ладно, пусть будет не массив, а некая переменная k:

#pragma data_seg("Shared")
int k;
#pragma data_seg()
#pragma comment(linker,"/section:Shared,rws")


> по поводу > #pragma
> comment(linker,"/section:.Shared,rws")
> а Shared у тебя с точкой в переди или нет?
Всё равно что с точкой, что без неё , ошибка не исчезает..(все варианты перепробовал)

Я даже их пример скачал, но на нём ошибка такая же.
вот это у меня работает 22.10.01 17:26  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>

#pragma data_seg(".shared")
unsigned g_LastUserActionTime = 0;
#pragma data_seg()

link ... /section:.shared,RWS ...
(".shareddata") - не длиннее 8 символов! 22.10.01 11:23  
Автор: EHOT Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> #pragma data_seg(".SHAREDDATA")
> .....Глобальные данные........
> #pragma data_seg()
>

линк: http://www.rsdn.ru/article/?baseserv/hookdll.xml
цитата:
Первое, что вы должны сделать - это создать разделяемый сегмент данных. Это делается при помощи объявления #pragma data_seg. Выберите какое-либо хорошее мнемоническое имя для сегмента данных (оно должно быть не длиннее 8 символов). Просто чтобы подчеркнуть произвольность имени, я использовал здесь свое собственное имя. Во время преподавания я обнаружил, что если я использую имена вида .SHARE или .SHR, или .SHRDATA, то студенты полагают, что имя имеет значение. А оно не имеет значения.

#pragma data_seg(".JOE")
HANDLE hWnd = NULL;
#pragma dta_seg()
#pragma comment(linker, "/section:.JOE,rws")

(".shareddata") - не длиннее 8 символов! 22.10.01 13:49  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
и в PE-файлах поле для имени секции - 8 байт :)
как я сразу не допёр :)

кстати там точка не обязательна
[C++] Одна переменная для всех копий dll. 21.10.01 22:30  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
а ты не в def-файле а в парметрах линкера напиши: /SECTION:.shared,RWS
К ggg 22.10.01 18:31  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> а ты не в def-файле а в парметрах линкера напиши:
> /SECTION:.shared,RWS
А ты в Builder`e не знаешь ли где устанавливать эти опции, чёто не могу найти
я не пользовался билдером 22.10.01 19:05  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
там же должно быть где то всё описано
в хелпе поищи
посмотри что внутри файлов проекта, которые создаёт билдер
а чем ты пользуешься... 22.10.01 20:35  
Автор: Access Статус: Незарегистрированный пользователь
<"чистая" ссылка>
в основном MS VC 6.0 22.10.01 21:51  
Автор: ggg <ggg> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach