OVH Cloud OVH Cloud

section shared - probleme au linkage

7 réponses
Avatar
syn-ack
bonjour, dans mon code j'ai placé

#pragma data_seg("SHARED")
mes données;

#pragma data_seg()
#pragma comment(linker, "/section:SHARED,RWS")

mais a la compile, j'obtiens le message suivant:
LINK : warning LNK4039: section "SHARED" specified with /SECTION option does
not exist

pourquoi?
--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************

7 réponses

Avatar
AG
syn-ack wrote:
bonjour, dans mon code j'ai placé

#pragma data_seg("SHARED")
mes données;

#pragma data_seg()
#pragma comment(linker, "/section:SHARED,RWS")

mais a la compile, j'obtiens le message suivant:
LINK : warning LNK4039: section "SHARED" specified with /SECTION option does
not exist

pourquoi?



As-tu initialisé les données dans ta section partagée ? Pourrais tu
donner le code exacte de :

#pragma data_seg("SHARED")
mes données;
#pragma data_seg()

Si les données ne sont pas initialisés dans la section partagée, ils
sont ignorés.

Alexandre.
Avatar
Aurélien REGAT-BARREL
> bonjour, dans mon code j'ai placé

#pragma data_seg("SHARED")
mes données;

#pragma data_seg()
#pragma comment(linker, "/section:SHARED,RWS")

mais a la compile, j'obtiens le message suivant:
LINK : warning LNK4039: section "SHARED" specified with /SECTION option


does
not exist

pourquoi?



"/SECTION:name,[E][C][I][R][W][S][D][K][L][P][X]
This option changes the attributes of a section, overriding the attributes
set when the .obj file for the section was compiled."

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcce/htm/complref_132.asp

Ca ne crée pas uen section, ça la modifie.
Utilise #pragma section à la place.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/pragm_25.asp


--
Aurélien REGAT-BARREL
Avatar
syn-ack
typedef vector<unsigned long> GeneratorList;
#pragma data_seg("SHARED")
static GeneratorList Listgen;
#pragma data_seg()
#pragma comment(linker, "/section:mysec,RWS")


jai du mal a savoir comment initialiser cela,,, mais meme ds dautre dll
comme celle ci avec dautre variable simple initialisé,, ca fait pareil

--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"AG" a écrit dans le message news:
40c9b08a$0$3673$
syn-ack wrote:
> bonjour, dans mon code j'ai placé
>
> #pragma data_seg("SHARED")
> mes données;
>
> #pragma data_seg()
> #pragma comment(linker, "/section:SHARED,RWS")
>
> mais a la compile, j'obtiens le message suivant:
> LINK : warning LNK4039: section "SHARED" specified with /SECTION option


does
> not exist
>
> pourquoi?

As-tu initialisé les données dans ta section partagée ? Pourrais tu
donner le code exacte de :

#pragma data_seg("SHARED")
mes données;
#pragma data_seg()

Si les données ne sont pas initialisés dans la section partagée, ils
sont ignorés.

Alexandre.



Avatar
syn-ack
typedef vector<unsigned long> GeneratorList;
#pragma section("mysec",read,write,shared)
__declspec(allocate("mysec")) static GeneratorList Listgen;
#pragma comment(linker, "/section:mysec,RWS")


jai une erreur a la compil :

C:projetsyndesk3dsystemdll.cpp(17) : warning C4068: unknown pragma
C:projetsyndesk3dsystemdll.cpp(19) : error C2341: 'mysec' : segment must
be defined using #pragma data_seg or code_seg prior to use





--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"Aurélien REGAT-BARREL" a écrit dans le
message news: 40c9b7fe$0$13923$
> bonjour, dans mon code j'ai placé
>
> #pragma data_seg("SHARED")
> mes données;
>
> #pragma data_seg()
> #pragma comment(linker, "/section:SHARED,RWS")
>
> mais a la compile, j'obtiens le message suivant:
> LINK : warning LNK4039: section "SHARED" specified with /SECTION option
does
> not exist
>
> pourquoi?

"/SECTION:name,[E][C][I][R][W][S][D][K][L][P][X]
This option changes the attributes of a section, overriding the attributes
set when the .obj file for the section was compiled."




http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcce/htm/co
mplref_132.asp

Ca ne crée pas uen section, ça la modifie.
Utilise #pragma section à la place.



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm
/pragm_25.asp


--
Aurélien REGAT-BARREL




Avatar
AG
syn-ack wrote:
typedef vector<unsigned long> GeneratorList;
#pragma data_seg("SHARED")
static GeneratorList Listgen;
#pragma data_seg()
#pragma comment(linker, "/section:mysec,RWS")


jai du mal a savoir comment initialiser cela,,, mais meme ds dautre dll
comme celle ci avec dautre variable simple initialisé,, ca fait pareil



#pragma data_seg("SHARED")
static GeneratorList Listgen(1,0);
#pragma data_seg()
#pragma comment(linker, "/section:mysec,RWS")

pour un vecteur d'un élément initialisé à 0.

Tu peux aussi spécifier au linker ta section dans le .def

Alexandre.
Avatar
syn-ack
merci,, jai pas de .def car jutilise le .lib
deja la compile est passé sans erreur ni warning!!!!!!!!


--
*************************
le bureau 3D pour windows
http://www.syndesk3d.fr.st
*************************
"AG" a écrit dans le message news:
40c9d192$0$3646$
syn-ack wrote:
> typedef vector<unsigned long> GeneratorList;
> #pragma data_seg("SHARED")
> static GeneratorList Listgen;
> #pragma data_seg()
> #pragma comment(linker, "/section:mysec,RWS")
>
>
> jai du mal a savoir comment initialiser cela,,, mais meme ds dautre dll
> comme celle ci avec dautre variable simple initialisé,, ca fait pareil

#pragma data_seg("SHARED")
static GeneratorList Listgen(1,0);
#pragma data_seg()
#pragma comment(linker, "/section:mysec,RWS")

pour un vecteur d'un élément initialisé à 0.

Tu peux aussi spécifier au linker ta section dans le .def

Alexandre.


Avatar
Aurélien REGAT-BARREL
> jai une erreur a la compil :

C:projetsyndesk3dsystemdll.cpp(17) : warning C4068: unknown pragma
C:projetsyndesk3dsystemdll.cpp(19) : error C2341: 'mysec' : segment


must
be defined using #pragma data_seg or code_seg prior to use



Quel compilateur ?
Moi ça passe sans problème.

--
Aurélien REGAT-BARREL