nu mai pot...

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

nu mai pot...

Post by adi0149 » 13 May 2010, 14:09

Salutare!
Fac un programel in MFC cu VC++ (VS2008) si am niste belele de care nu stiu cum sa scap. In primul primul rand, aproape de fiecare data cand dau "build", linkerul crapa, dar dand "build" din nou, merge. Cu treaba asta m-am cam obisnuit... tre sa dau "build" de 2 ori ca sa mearga. :)
Am cautat pe net, si am vazut ca treaba asta e ceva normal la VS08, d-aia nu m-am agitat pana azi. Din pacate problema pare a se extinde. Uneori, "uita" ca anumite ferestre de dialog au deja clase si nu ma lasa sa le adaug variabile, iar mai nou, nu mai vede variabile definite, zice ca nu sunt definite, desi acu 2 minute mergeau foarte bine, ba chiar mai mult, programul ruleaza corect.

Hai sa fiu mai clar...

Am o clasa pt un dialog: CLoadsDlg. In dialog am un list control, si in header am o variabila asociata: CListCtrl m_LoadsList. In LoadsDlg.cpp am niste functii care insereaza iteme si coloane in lista, dar acu vroiam sa mai fac o functie care sa stearga iteme din lista, dar nu mai merge. Nu-mi mai vede "m_LoadsList". Dar nu vede de loc... adica... atunci cand dau click dreapta pe el, in zonele in care el functioneaza (de exp. in functia de inserat iteme), si ii dau "Go to definition", imi zice ca nu e definit, desi programul merge, iar eu il vad clar definit in header. :(

Nu mai inteleg. Sunt sigur ca e din cauza linkerului, dar nu stiu ce sa fac.



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: nu mai pot...

Post by Ovidiu Cucu » 13 May 2010, 14:23

Sterge fisierul cu extensia .ncb. Din cand in cand intellisense-ul o ia razna.
Ce inseamna aia "linkerul crapa"? Asa pur si simplu, nu spune nimic?

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: nu mai pot...

Post by adi0149 » 13 May 2010, 14:32

Ovidiu Cucu wrote:Ce inseamna aia "linkerul crapa"? Asa pur si simplu, nu spune nimic?
ba da... zice uite-asa:

1>LINK : D:\Munca\Trofeul Hidrotehnica\Soft\2010.05.13\2\PipeDoctor\Debug\PipeDoctor.exe not found or not built by the last incremental link; performing full link
1>Embedding manifest...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation. All rights reserved.
1>LINK : fatal error LNK1000: Internal error during IncrBuildImage

si dupa aia daca ii dau build din nou merge. Anyway... o sa incerc ce mi-ai zis. brb cu raspuns. mersi.

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: nu mai pot...

Post by adi0149 » 13 May 2010, 14:34

dap... se pare ca acu merge dupa ce am sters .ncb
Mersi!

Edit: Ajutorul tau a venit cum nu se putea mai bine. Se pare ca uita din ce in ce mai des faptu ca dialogurile au clase atasate, sau uneori zice ca nu pot sa adaug event handlers ca fisieru e read-only. Noroc ca acuma stiu ca tre sa sterg .ncb-u ala tampit. thx :)

Sper ca VS2010 o sa fie mai bunicel. Oricum... la cate stiu eu... si 2008 e mult prea bun :P

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: nu mai pot...

Post by cristianamarie » 13 May 2010, 16:13

adi0149 wrote:dap... se pare ca acu merge dupa ce am sters .ncb
Mersi!

Edit: Ajutorul tau a venit cum nu se putea mai bine. Se pare ca uita din ce in ce mai des faptu ca dialogurile au clase atasate, sau uneori zice ca nu pot sa adaug event handlers ca fisieru e read-only. Noroc ca acuma stiu ca tre sa sterg .ncb-u ala tampit. thx :)

Sper ca VS2010 o sa fie mai bunicel. Oricum... la cate stiu eu... si 2008 e mult prea bun :P
.ncb e intellisense, nu are nimic de-a face cu linkerul.
Daca ce ai patit e asta (LNK1000, dar poate avea mai multe cauze), ai acolo hotfix-ul.
SP1 la VS 2008 rezolva. E un bug intern in linker.
Nuclear launch detected

Dragos Cojocari
Membru++
Membru++
Posts: 789
Joined: 11 Jul 2007, 14:11

Re: nu mai pot...

Post by Dragos Cojocari » 13 May 2010, 16:16

Eu am o neincredere aproape mistica in incremental build. Probabil VS-urile de la 6 incoace stau mai bine la capitolul asta dar cu VS 6 am patit de multe ori ca un incremental build sa faca o mare varza.

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: nu mai pot...

Post by cristianamarie » 13 May 2010, 16:18

Dragos Cojocari wrote:Eu am o neincredere aproape mistica in incremental build. Probabil VS-urile de la 6 incoace stau mai bine la capitolul asta dar cu VS 6 am patit de multe ori ca un incremental build sa faca o mare varza.
Linkerul de 2008 cu SP1 e stabil. VS6 avea probleme similare, rezolvate si ele pina la urma de VS6 SP6.
Nuclear launch detected

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: nu mai pot...

Post by adi0149 » 13 May 2010, 16:41

@cristianamarie
M-am prins ca treaba cu .ncb nu rezolva problema linkerului, dar eu ma obisnuisem cu asta. Ideal e ca-mi rezolva problema in care VS "uita" clase si variabile. Oricum, asta s-ar putea sa fie generata tot de problema linkerului, ceea ce o sa incerc sa rezolv cu SP1.

Mersi!

Edit: Of... dupa ce m-am chinuit sa pun SP1 (a durat foarte mult), acuma nu mai compileaza de loc :)) Zice asa:

1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C2146: syntax error : missing ';' before identifier 'rgclsidAllowed'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(6053) : error C2039: 'rgclsidAllowed' : is not a member of 'ATL::ATL_PROPMAP_ENTRY'
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(422) : see declaration of 'ATL::ATL_PROPMAP_ENTRY'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(6053) : error C2660: 'ATL::CComVariant::ReadFromStream' : function does not take 4 arguments

sugestii?

Edit2: Am gasit. se pare ca SP1 nu e chiar flawless nici el. Tre sa iau Visual Studio 2008 Service Pack 1 ATL Security Update :)

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: nu mai pot...

Post by cristianamarie » 14 May 2010, 07:31

adi0149 wrote:@cristianamarie
M-am prins ca treaba cu .ncb nu rezolva problema linkerului, dar eu ma obisnuisem cu asta. Ideal e ca-mi rezolva problema in care VS "uita" clase si variabile. Oricum, asta s-ar putea sa fie generata tot de problema linkerului, ceea ce o sa incerc sa rezolv cu SP1.

Mersi!

Edit: Of... dupa ce m-am chinuit sa pun SP1 (a durat foarte mult), acuma nu mai compileaza de loc :)) Zice asa:

1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C2146: syntax error : missing ';' before identifier 'rgclsidAllowed'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(431) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(6053) : error C2039: 'rgclsidAllowed' : is not a member of 'ATL::ATL_PROPMAP_ENTRY'
1> c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(422) : see declaration of 'ATL::ATL_PROPMAP_ENTRY'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\atlcom.h(6053) : error C2660: 'ATL::CComVariant::ReadFromStream' : function does not take 4 arguments

sugestii?

Edit2: Am gasit. se pare ca SP1 nu e chiar flawless nici el. Tre sa iau Visual Studio 2008 Service Pack 1 ATL Security Update :)
KB971092, asa e - Visual Studio 2008 Service Pack 1 ATL Security Update
trebuie inclus, parca, atlbase.h inainte de atlcom.h sau asa ceva, sincer nu mai retin
Nuclear launch detected

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: nu mai pot...

Post by cristianamarie » 14 May 2010, 07:33

adi0149 wrote:Edit: Of... dupa ce m-am chinuit sa pun SP1 (a durat foarte mult), acuma nu mai compileaza de loc :)) Zice asa:
da, are 512 MB parca si il expandeaza in RAM si ii mai face si checksum (de aia dureaza atit ca ocupa si 2GB de ram).
a urlat multa lume pe tema asta, tu esti unul singur si ti-au iesit ochii ca la melc, dar au fost firme intregi care o zi au instalat sp1 ...
asta e.
Nuclear launch detected

User avatar
adi0149
Membru
Membru
Posts: 65
Joined: 04 Aug 2009, 16:42
Judet: Bucureşti
Location: Bucuresti
Contact:

Re: nu mai pot...

Post by adi0149 » 14 May 2010, 10:29

cristianamarie wrote:tu esti unul singur si ti-au iesit ochii ca la melc, dar au fost firme intregi care o zi au instalat sp1 ...
lol Imi imaginez cat au urlat aia dupa ce au observat ca sp1 nu era de ajuns. :))
cristianamarie wrote:trebuie inclus, parca, atlbase.h inainte de atlcom.h sau asa ceva, sincer nu mai retin
exact! doar sp-ul nu era de ajuns, a trebuit sa mut si includerea lui atlbase.h in capul listei. Dar in sfarsit MERGE! Multumesc!

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: nu mai pot...

Post by cristianamarie » 14 May 2010, 12:27

adi0149 wrote:
cristianamarie wrote:tu esti unul singur si ti-au iesit ochii ca la melc, dar au fost firme intregi care o zi au instalat sp1 ...
lol Imi imaginez cat au urlat aia dupa ce au observat ca sp1 nu era de ajuns. :))
cristianamarie wrote:trebuie inclus, parca, atlbase.h inainte de atlcom.h sau asa ceva, sincer nu mai retin
exact! doar sp-ul nu era de ajuns, a trebuit sa mut si includerea lui atlbase.h in capul listei. Dar in sfarsit MERGE! Multumesc!
Da, a iesit scandal.
Because VS 2005 SP1 is so large, it takes a long time – typically around 10 minutes – to load the entire image into memory in order to generate a hash over the image. La VS 2008 e si mai trist.

Daca vrei sa citesti de ce:
http://blogs.msdn.com/heaths/archive/20 ... stall.aspx
http://blogs.msdn.com/heaths/archive/20 ... 15558.aspx
Se aplica la 2005, dar ideea e aceeasi. In mare, se despacheteaza patch-ul ala (un fisier .msp enorm), calculeaza has-ul pe enormitate, verifica legitimitatea, dupa asta vine sleahta de la MSI si valideaza toata matahala.

Asta e testul lor la MS:
Take a look at a snippet of the verbose log generated while patching Visual Studio 2005 Team System – our largest SKU – with the VS 2005 SP1 main patch, which targets the non-Express, non-TFS Visual Studio SKUs for a single language:

MSI (s) (58:40) [04:28:57:387]: SOFTWARE RESTRICTION POLICY: C:\DOCUME~1\user\LOCALS~1\Temp\ZNW2EA\VS80sp1-KB918525-X86-Beta-ENU.msp has a digital signature
MSI (s) (58:40) [04:36:33:562]: SOFTWARE RESTRICTION POLICY: C:\DOCUME~1\user\LOCALS~1\Temp\ZNW2EA\VS80sp1-KB918525-X86-Beta-ENU.msp is permitted to run at the 'unrestricted' authorization level.

Over seven and one half minutes is spent mapping the entire file into memory and generating an image has over the mapped file.

Deci pe masinile noastre mai necajite... you do the match.
Nuclear launch detected

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: nu mai pot...

Post by Ovidiu Cucu » 15 May 2010, 21:12

adi0149 wrote: Sper ca VS2010 o sa fie mai bunicel.
Una din chestiile noi la VS2010 este ca .ncb-ul a fost inlocuit cu un fisier SQL Server Compact.
Vezi pe Visual C++ Team Blog.

Post Reply