Pierakstīties, izmantojot Microsoft
Pierakstīties vai izveidot kontu
Sveicināti!
Atlasīt citu kontu.
Jums ir vairāki konti
Izvēlieties kontu, ar kuru vēlaties pierakstīties.

Pazīmes

Apsveriet šādu situāciju.

  • Jūs izveidojat lietojumprogrammu, kas ielādē baits no struktūra vai Microsoft Visual Studio 2008 1. servisa pakotne (SP1) klases.

  • Ir ieslēgta opcija /Ox optimizācija vai /O2 optimizācija.

  • Jums apkopot lietojumprogrammu, izmantojot laidiena konfigurācijas x64 platformas.

Šādā gadījumā piekļūt struktūra vai klases locekļa ģenerēto nobīde nav pareiza.

Šī problēma rodas tikai, kad struktūra lielumu un nobīde vai klases lielums un nobīde vienāds kādu no šīm pāri:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Risinājums

Informācija par labojumfailu

Pašlaik korporācija Microsoft piedāvā atbalstītu labojumfailu. Tomēr tas ir paredzēts tikai šajā rakstā aprakstītās problēmas novēršanai. Izmantojiet to tikai tām sistēmām, kurām ir radusies tieši šī problēma. Iespējams, tiks veikta šī labojumfaila papildu testēšana. Tādēļ, ja jums ir šī problēma nerada nopietnus traucējumus, ieteicams pagaidīt Visual Studio 2008 nākamā servisa pakotne, kurā ir iekļauts šis labojumfails.

Lai nekavējoties novērstu šo problēmu, sazinieties ar Microsoft klientu atbalsta pakalpojumu sniedzēju, lai iegūtu labojumfailu. Pilnīgu sarakstu ar Microsoft klientu atbalsta pakalpojumu sniedzēju tālruņu numuriem un informāciju par atbalsta izmaksām, apmeklējiet šo Microsoft Web vietu:

http://support.microsoft.com/contactus/?ws=supportPiezīme. Īpašos gadījumos standarta izmaksas par atbalsta zvaniem nav jāsedz, ja Microsoft atbalsta speciālists nosaka, ka šo problēmu novērsīs noteikts atjauninājums. Parasti atbalsta izmaksas tiek piemērotas jautājumiem par papildu atbalstu un problēmām, kas neskar specifisko atjauninājumu apspriešanu.

Priekšnosacījumi

Jums ir jābūt Visual Studio 2008 1. servisa pakotni, lai lietotu šo labojumfailu.

Restartēšanas nepieciešamība

Nav pēc šī labojumfaila lietošanas jārestartē dators.

Informācija par labojumfaila aizstāšanu

Šis labojumfails neaizstāj nevienu citu labojumfailu.

Informācija par failu

Šī labojumfaila versijai angļu valodā ir faila atribūti (vai jaunāki faila atribūti) Šajā tabulā sniegtie. Šo failu datumi un laiki ir norādīti atbilstoši universālajam koordinētajam laikam (UTC). Skatot faila informāciju, tā tiek pārvērsta atbilstoši vietējam laikam. Lai noskaidrotu atšķirību starp UTC un vietējo laiku, izmantojiet vadības paneļa vienuma Datums un laiks cilni Laika josla.

Faila nosaukums

Faila versija

Faila lielums

Datums

Laiks

Platformas

C2.dll

15.0.30729. 4082

2,283,320

19-Mar-2009

05:13

x86

C2.dll

15.0.30729.4082

2,36 1,656

19-Mar-2009

05:13

x86

C2.dll

15.0.30729.4082

3,01 7,528

19-Mar-2009

05:13

x64

Link.exe

9.0.30729.4082

1,0 54,520

19-Mar-2009

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

Risinājums

Lai novērstu šo problēmu, pievienot vienu vai vairākus fiktīva "unsigned char" dalībniekus paplašināšanai lieluma struktūra vai mazākais vairāku baitu astoņas klases. Piemēram, pagarināt 14 baitiem līdz 16 baitus.

Statuss

Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".

Papildinformācija

Lai iegūtu papildinformāciju par programmatūras atjauninājumu terminoloģiju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

824684 tiek izmantota Microsoft programmatūras atjauninājumu standarta terminoloģijas apraksts

Problēmas atveidošanas darbības

  1. Veidot lietojumprogrammas nosaukumu Test.cpp, izmantojot šo kodu Visual Studio 2008 SP1:

    typedef struct DskDecimal
    {
    unsigned char precision;
    unsigned char scaleFactor;
    unsigned short value[ 5];
    unsigned char maxPrecision;
    unsigned char maxScaleFactor;
    } DskDecimal;

    int main()
    {
    DskDecimal decimal;
    decimal.maxScaleFactor = 4;
    DskDecimal self = decimal;
    return self.maxScaleFactor;
    }
  2. Kompilēt programmu, izmantojot šādu komandu:

    CL test.cpp /O2 /MD

Paredzamais rezultāts ir 4. Tomēr faktiskais rezultāts ir 0.

Nepieciešama papildu palīdzība?

Vēlaties vairāk opciju?

Izpētiet abonementa priekšrocības, pārlūkojiet apmācības kursus, uzziniet, kā aizsargāt ierīci un veikt citas darbības.

Kopienas palīdz uzdot jautājumus un atbildēt uz tiem, sniegt atsauksmes, kā arī saņemt informāciju no ekspertiem ar bagātīgām zināšanām.

Vai šī informācija bija noderīga?

Cik lielā mērā esat apmierināts ar valodas kvalitāti?
Kas ietekmēja jūsu pieredzi?
Nospiežot Iesniegt, jūsu atsauksmes tiks izmantotas Microsoft produktu un pakalpojumu uzlabošanai. Jūsu IT administrators varēs vākt šos datus. Paziņojums par konfidencialitāti.

Paldies par jūsu atsauksmēm!

×