Vra

Ek het 'n kommersiële produk wat 'n DLL (moedertaal 32-bit-kode), en nou is dit tyd om 'n 64-bis weergawe van dit te bou. So wanneer die installering van op 64-bis Windows, die 32-bit weergawe gaan in Windows \ SysWow64, en die 64-bis weergawe gaan in ... Windows \ System32! (Ek byt my tong hier ...) Of die DLL (s) kan saam met die kliënt aansoek word geïnstalleer.

Wat moet ek die 64-bit DLL noem?

dieselfde naam as 32-bit: Twee lêers wat dieselfde ding doen, het dieselfde naam, maar is heeltemal nie-verwissel. Is dit nie 'n resep vir verwarring en ondersteuning probleme?

Verskillende name (bv product.dll en product64.dll): Nou kliënt aansoeke moet weet of hulle hardloop 32-bis of 64-bit om my DLL verwys, en daar is tale waar dit nie bekend totdat hardloop-time - nET om net een voorbeeld. En nou al die staties saamgestel kliënte moet die verklarings invoer conditionalize: INDIEN target = Win64 dan voer Blah van "product64.dll" NÓG invoer Blah van "product.dll" ENDIF

Die produk bevat groot hoeveelhede van die C-kode, en 'n groot deel van C ++ -. Porting dit aan C # is nie 'n opsie

advies? Voorstelle?

Was dit nuttig?

Oplossing 3

Ek het besluit om Microsoft op hierdie, wat dieselfde name vir die DLLs in System32 gehou toe hulle tot 64-bit volg. Op Win7 / 64, System32 \ avicap32.dll is 'n 64-bit DLL!

Daar is 'n paar moontlike verwarring vir myself en my kliënte, met 32-bit en 64-bis DLLs met dieselfde naam. Maar ek dink dit erger sou wees om al my kliënte moet hul kodewoord-wydte sensitief te maak. Veral die NET ontwikkelaars, wat dikwels hul teiken platform stel kan verlaat om 'AnyCPU.

Ander wenke

kliënt aansoeke nie moet "weet" hulle is 32 bit of 64 bit. Die OS outomaties vragte DLLs van die toepaslike plek, want dit is nie moontlik om 'n 32 bit DLL in 'n 64 bit proses te laai, en dit is nie moontlik om 'n 64 bit DLL in 'n 32 bit proses te laai.

As 'n 32 bit aansoek probeer vrag iets uit system32, die bedryfstelsel sal stilweg lei dit tot die SysWow64 gids, dwing die 32 bit weergawe te laai.

Deur met verskillende name, jy hierdie hele meganisme te verslaan. 'N Meganisme wat spesifiek gebou is om toelaat om dieselfde naam te gebruik.

Hoekom nie voorvoegsel die dll's met 'n onderstreep ... soos product_32.dll en product_64.dll ? OF aangedui dit deur die gebruik van 'n platform voorvoegsel - product_x86_32.dll en product_x86_64.dll ? Ten minste dat die verwarring van die benaming van die DLL sal duidelik ... Wat dink jy?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top