Toon posts:

[MFC/C++] MFC 7.0 libraries gebruiken in VS.NET 2003*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een applicatie/plugin te maken voor autocad maar stuit nu op een probleem m.b.t. MFC.
Ik wil een tabblad toevoegen aan een bestaand venster en dit kan wel maar gebeurd via MFC en daar zit nu mijn probleem.
Ikzelf werk met Visual Studio .NET 2003 en die heeft de MFC 7.1 librarys bij zich maar ik heb de MFC 7.0 librarys nodig want de autocad sdk is ontwikkeld met de MFC 7.0 librarys.
Deze 7.0 librarys (12 .lib bestanden als ik het goed heb) zijn onderdeel van Visual Studio .NET 2002 welke ik dus niet heb.
Weet iemand waar ik deze librarys kan downloaden of is er iemand die deze aan mij kan mailen want zoals het nu is kan ik niet verder zonder deze bestanden.
Of is er een methode om in dit geval Visual Studio de MFC 7.1 librarys te laten gebruiken i.p.v. de 7.0 waar om gevraagd word door de autocad sdk.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
De .lib bestanden zijn geen redistributables, dus de mag je niet mailen (alleen de .DLLs mogen).

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
MSalters schreef op woensdag 31 augustus 2005 @ 09:59:
De .lib bestanden zijn geen redistributables, dus de mag je niet mailen (alleen de .DLLs mogen).
Hoe moet men dan programmeren voor de nieuwste Autocad versie (2006) als je niet aan visual Studio 2002 kan komen en de bestanden ervan niet los verspreid mogen worden, ik heb zelfs gekeken om het te kopen maar het is zelfs niet meer in de winkel te verkrijgen, althans waar ik heb gekeken.
Microsoft verkoopt alleen de nieuwste versie van zijn software en daardoor kun je niet meer programmeren voor een ander stuk software wat met een oudere versie is gemaakt, lijkt me niet dat dit Microsoft zijn bedoeling is.
Op deze manier zie ik me bijna genootzaakt om illegaal aan visual Studio 2002 te proberen te komen omdat ik anders gewoonweg niet verder kan.

Is er iemand die een oplossing heeft voor mij waardoor ik toch aan deze bestanden kan komen zonder inbreuk te maken op copyright/licentie bepalingen.
Misschien iemand die mij zijn Visual Studio 2002 voor een mooie prijsje wil verkopen.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

die 7.1 zijn toch backwards compatible ?

ASSUME makes an ASS out of U and ME


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

Verwijderd schreef op woensdag 31 augustus 2005 @ 11:09:
Is er iemand die een oplossing heeft voor mij waardoor ik toch aan deze bestanden kan komen zonder inbreuk te maken op copyright/licentie bepalingen.
Misschien iemand die mij zijn Visual Studio 2002 voor een mooie prijsje wil verkopen.
Sorry, maar hier is GoT niet voor bedoeld. Verder dan [google=buy visual C++ 2002] kunnen we je niet helpen, zoals gezegd is het uitwisselen van die bestanden niet toegestaan en de verkoop van software hoort simpelweg niet in Programming & Webscripting :). Probeer het anders eens in V&A op de frontpage.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

HIGHGuY schreef op woensdag 31 augustus 2005 @ 12:13:
die 7.1 zijn toch backwards compatible ?
Bedoel je niet dat je met 7.1 je 7.0 code kan compilen? Want dat is natuurlijk wat anders dan dat 7.1 code met een 7.0 dll samen kan werken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Verwijderd schreef op woensdag 31 augustus 2005 @ 11:09:
[...]
Hoe moet men dan programmeren voor de nieuwste Autocad versie (2006) als je niet aan visual Studio 2002 kan komen en de bestanden ervan niet los verspreid mogen worden, ik heb zelfs gekeken om het te kopen maar het is zelfs niet meer in de winkel te verkrijgen, althans waar ik heb gekeken.
Microsoft verkoopt alleen de nieuwste versie van zijn software en daardoor kun je niet meer programmeren voor een ander stuk software wat met een oudere versie is gemaakt, lijkt me niet dat dit Microsoft zijn bedoeling is.
MSDN Universal Subscription? Volgens mij zitten daar de relevante versies van MSVC++ bij, ik dacht zelfs dat ze een hele tijd de MSVC1.52c compiler hebben meegeleverd.

Overigens is het bij MS gebruikelijk dat je de licentie van een nieuwe versie mag gebruiken voor een oude versie, maar dat kan Microsoft Sales je ongetwijfeld vertellen. Dat verklaart vaak waarom je alleen de laatste versie te koopt ziet.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

.oisyn schreef op woensdag 31 augustus 2005 @ 12:16:
[...]


Bedoel je niet dat je met 7.1 je 7.0 code kan compilen? Want dat is natuurlijk wat anders dan dat 7.1 code met een 7.0 dll samen kan werken :)
ik bedoel daarmee dat VS2K3 zelf de dependancies bepaalt van een project, en dat dus waarschijnlijk de 7.1 DLL's daarbij zullen zitten. bij installatie zullen dan de AutoCAD dll's overschreven worden, en wegens de backwards compatibiliteit zal alles moeten draaien als een tiet

ASSUME makes an ASS out of U and ME


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

Als ik me niet vergis heb je anders verschillende dll's voor 7.0 en 7.1. Als je dus tegen een 7.1 .lib linkt, krijg je dus ook automatisch de 7.1 dll, en dat is niet de gesharede dll die je voor autocad moet laden (aangezien dat 7.0 is)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
MSalters schreef op woensdag 31 augustus 2005 @ 12:39:
[...]

MSDN Universal Subscription? Volgens mij zitten daar de relevante versies van MSVC++ bij, ik dacht zelfs dat ze een hele tijd de MSVC1.52c compiler hebben meegeleverd.

Overigens is het bij MS gebruikelijk dat je de licentie van een nieuwe versie mag gebruiken voor een oude versie, maar dat kan Microsoft Sales je ongetwijfeld vertellen. Dat verklaart vaak waarom je alleen de laatste versie te koopt ziet.
Dat van MSDN Universal Subription heb ik meer gehoord maar dat is dacht ik iets waarvoor je moet betalen en vrij pittig geprijsd is maar ik zal het wel nakijken, zal vast wel info over te vinden zijn op het internet.

Dat over het gebruik van oudere software zal ik proberen contact op te nemen met Microsoft want als dat zo is dan kunnen zij mij misschien wel verder helpen, bedankt voor de info ik probeer vandaag gelijk nog met Microsoft in contact te komen.

Verwijderd

Topicstarter
.oisyn schreef op woensdag 31 augustus 2005 @ 12:58:
Als ik me niet vergis heb je anders verschillende dll's voor 7.0 en 7.1. Als je dus tegen een 7.1 .lib linkt, krijg je dus ook automatisch de 7.1 dll, en dat is niet de gesharede dll die je voor autocad moet laden (aangezien dat 7.0 is)
Er zit een verschil tussen dll's en lib bestanden.
DLL bestanden zijn normaal gesproken zo gemaakt dat bijvoorbeeld de MFC 7.1 ook de oudere versies ondersteund en daardoor backwards compatible is.
Lib bestanden kunnen echter staties gelinkt zijn aan een bepaalde versie en in mijn geval dus MFC 7.0, Autocad 2004,2005 en 2006 hebben lib bestanden bij zich die weer staties gelinkt zijn aan de MFC 7.0 lib bestanden en dit vereist bij het compileren dan ook dat de juiste versie van deze bestanden aanwezig zijn.
Dit probleem doet zich in princiepe alleen voor als je programmeerd voor een programma wat een eigen developers kit heeft met eigen lib bestanden die je nodig hebt, als je zelf een nieuw programma maakt doet dit probleem zich niet voor.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ah ok, ik ging er even vanuit dat de runtime geshared moest worden en je dus met verschillende runtimes conflicten krijgt (zoals dat bij 3dsmax bijvoorbeeld het geval is), maar je linkt dus statisch.

Wat voor errors krijg je dan precies? Want kun je niet gewoon tegen de 7.1 versie linken? Zeker als gezegd wordt dat het backwards compatible is (heb zelf niet zo'n ervaring met dat bagger MFC) moet dat lukken lijkt me.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ik ben dus niet de enige die MFC bagger vind.

Het probleem met Autocad is dat er een aantal lib bestanden zijn met functies binnen Autocad om bepaalde vensters te maken.
Deze venster kun je dan zelf uitbreiden met eigen functies en alles vensters in Autocad zijn gemaakt m.b.v. MFC 7.0
Helaas staat er in die lib bestanden aangegeven dat er gezocht moet worden naar het bestand mfc70.lib en zonder dit bestand stopt Visual Studio met compilen en volgt er een error.
Ik heb al geprobeerd om mfc71.lib te hernoemen naar mfc70.lib en dan word er wel gelinkt maar dan komen de problemen pas.
Als ik dan mijn plugin inlaad zonder ook maar er gebruik van te maken loopt Autocad gelijk vast en dan heb ik nog geen funktie van MFC gebruikt binnen mijn plugin want die moet dan nog worden aangeroepen door een apart commando.

Heb al ergens gelezen dat andere mensen hetzelfde probleem hebben maar nog nergens anders een oplossing gevonden behalve gewoon de juiste mfc*.lib bestanden te gebruiken.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

Kun je trouwens niet gewoon een mfc70.dll downloaden ([google=mfc70.dll]), en daar een .lib uit trekken om mee te linken? Daar bestaan wel tools voor, hoewel ik er zo snel niet een kan vinden (ik weet dat borland's implib.exe zoiets kan doen, maar dat is volgens mij weer niet compatible met msvc++). Je hebt ook een DLL to Lib tool ([google=dll to lib]), die kan van een dll een static lib maken, dan ben je er ook :).

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Hmm, ik heb inderdaad meer over zoiets gehoord maar was het totaal weer vergeten totdat je het nu zegt.
Als dat zou werken zou ik gelijk geholpen zijn, vanavond gelijk zoeken naar die dll to lib tool en ik laat het nog even weten of dat werkt.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Verwijderd schreef op woensdag 31 augustus 2005 @ 13:10:
[...]
DLL bestanden zijn normaal gesproken zo gemaakt dat bijvoorbeeld de MFC 7.1 ook de oudere versies ondersteund en daardoor backwards compatible is.
"Normaal" gesproken misschien, maar we hebben het hier over MFC71.DLL. Om compatible te zijn is de eerste vereiste dat de DLL dezelfde naam heeft. Het probleem is dat Autocad MFC70.DLL gebruikt.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
.oisyn schreef op woensdag 31 augustus 2005 @ 15:24:
Kun je trouwens niet gewoon een mfc70.dll downloaden ([google=mfc70.dll]), en daar een .lib uit trekken om mee te linken?
Hoe kom je aan de bijbehorende headers? Want als je de 7.1 .h's gebruikt met 7.0 .lib's dan schiet je nog steeds niet veel op.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21:33

.oisyn

Moderator Devschuur®

Demotivational Speaker

MSalters schreef op woensdag 31 augustus 2005 @ 16:34:
[...]

"Normaal" gesproken misschien, maar we hebben het hier over MFC71.DLL. Om compatible te zijn is de eerste vereiste dat de DLL dezelfde naam heeft. Het probleem is dat Autocad MFC70.DLL gebruikt.
Uit z'n verhaal haal ik dat ie statisch linkt en dus geen gebruik maakt van DLLs.
MSalters schreef op woensdag 31 augustus 2005 @ 16:36:
[...]

Hoe kom je aan de bijbehorende headers? Want als je de 7.1 .h's gebruikt met 7.0 .lib's dan schiet je nog steeds niet veel op.
Er zitten nou niet echt baanbrekende changes in MFC tussen 7.0 en 7.1. Met een beetje mazzel (nee, natuurlijk is dat niet gegarandeerd) kun je dus prima compilen met de 7.1 headers terwijl je daadwerkelijk een 7.0 lib gebruikt. Daarnaast begreep ik dat hij meelinkt met autocad libs die weer een MFC 7.0 verwachten, die hoef je dus niet opnieuw te compilen en daarom zijn er ook geen headers nodig.

[ Voor 9% gewijzigd door .oisyn op 31-08-2005 18:03 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Nou ik heb dll to lib gebruikt om van mfc70.dll een mfc70.lib te maken en dat is ook goed gegaan, echter nu komt gelijk het volgende probleem om de hoek en wel mfcs70.lib.
mfcs70.lib heeft geen gelijknamige dll.
mfc70.lib is de standaard library en mfcs70.lib is de statische library en ik weet niet hoe ik een statische library kan maken en wat het verschil is met een gewone library.
Ik heb gelijk even verder gekeken welke librarys er eventueel nog meer gevraagt kunnen worden en dat zijn eventueel mfc70u.lib en mfcs70u.lib welke allebei unicode ondersteuning hebben en voor alle bestanden ook nog debug versies.
Tevens heb ik de Microsoft website doorgenomen en google gebruikt om te kijken voor het downgraden van Visual Studio C++ maar daarvoor is een subscription nodig welke als ik het goed heb bijna 200 dollar per jaar kost.
Ik heb maar besloten om te kijken of een winkel nog een Visual Studio 2002 heeft en deze te kopen of eventueel de veilingsites etc. af te gaan om er hier aan te komen.
Mocht dit niet lukken dan zie ik mij genootzaakt om het via de niet gehele legale kanalen te proberen helaas.

Ik wil iedereen bedanken die mij heeft geprobeerd te helpen en hoop dat ik spoedig een oplossing heb voor mijn probleem.
Pagina: 1