Avatar billede danm Nybegynder
24. august 2007 - 23:51 Der er 10 kommentarer og
1 løsning

Programmere til både windows og Linux

Jeg er nu langt om længe kommet igang med at prøve lidt c++, og bruger dertil devc++ som IDE. Ikke fordi jeg ved så meget om de forskellige compilere og IDE'er, det var mere fordi den havde jeg et link til så jeg kunne downloade..

Med tiden skal jeg lave et program der har en brugerflade i et vindue, som vi kender det fra windows og linux programmer..

Hvad skal man være opmærksom på med hensyn til programmeringen hvis jeg gerne vil lave et program der kan køre på både windows og Linux??
Eller er der en compiler eller noget der kan indstilles til at compile til enten windows eller Linux?
Min plan er lidt at undgå at bruge de grafiske komponenter der er i windows, og se om jeg kan lave dem selv (selvom det nok bliver et kæmpe og besværligt arbejde at lave tekstbokse, checkbokse osv..)
Avatar billede bertelbrander Novice
25. august 2007 - 00:30 #1
Du kan jo bruge et af de frameworks der allerede er lavet med det formål:
http://trolltech.com/products/qt
http://www.wxwidgets.org/

Så kan dine programmer køre både det ene og det andet og det tredie sted.
Og du slipper for at lave hele arbejdet selv.
Avatar billede danm Nybegynder
25. august 2007 - 15:27 #2
Hm.. Den der Qt lyder faktisk spændende. Jeg havde dog lidt svært ved at læse mig frem til metoden. Er det et framework ligesom .net og J2ee, hvor frameworket skal installeres på alle computere der skal køre programmet?
Avatar billede bertelbrander Novice
25. august 2007 - 16:14 #3
Jeg har ikke selv erfaring med QT, men som jeg forstår det linkes det sammen med din applikation, så der ikke skal installeres noget på den computer det skal køres på, der er måske nogle dll'er der skal distribueres sammen med applikationen.

Det er den måde wxWidgets virker på, her kan man vælge om man vil linke det hele til et stort program eller man vil have wxWidgets i en dll for sig selv.
Avatar billede intel4004 Novice
26. august 2007 - 23:17 #4
Jeg har selv en del erfaring med wxWidgets. Bruger du wxwidgets frameworket så linker du specifikt til et wxwidget library som du selv kan vælge om skal være static eller dynamic. Det mest normale er også at compile sit wxwidgets library selv.

wxWidgets er et c++ framework som vel primært er kendt for at gøre det muligt at lave platforms-uafhængige GUI applikationer. Udover det har wxWidgets også mange andre features såsom sin egen wxString implementation og også et C++ tråd-library som er rimelig nem at bruge.

Det er meget interessant at lærer C++ samtidig med wxWidgets, det er faktisk en god kombination synes jeg. Held og lykke :)

Mvh Intel4004
Avatar billede danm Nybegynder
27. august 2007 - 01:23 #5
Jeg kiggede på wxWidgets hjemmeside, og er lige lidt i tvivl. Er wxWidget et framework med komponenter som bruges som et plugin i eksempelvis devc++, eller er det også en IDE hvor jeg kan lave hele programmeringen?
Avatar billede intel4004 Novice
27. august 2007 - 09:43 #6
WxWidgets er et C++ library, altså en stor bunke C++ kode som kan kompileres til et library (på windows tit en .dll) som man så derefter kan linke til når man kompilerer ens eget program (exe-filen). Et kompileret library kan være form af et static library (.lib/.a) eller et dynamic library (.dll på windows). Jeg har ingen erfaring med dynamiske libraries på linux men der må det vel også eksistere(?).

Når man så bruger wxWidgets så benytter man sig af den API i ens egen C++ kode, og altså kun der.

Så du får ingen ekstra GUI elementer i eksempelvis devc++. Men der findes faktisk en version af devc++ som har ekstra funktionalitet så det er lettere at benytte wxwidgets: http://wxdsgn.sourceforge.net/.

Kig evt. her:
http://en.wikipedia.org/wiki/Library_%28computing%29
http://en.wikipedia.org/wiki/Wxwidgets

Mvh Intel4004
Avatar billede intel4004 Novice
27. august 2007 - 09:55 #7
Jeg kom til at overveje om det mon forvirrer yderligere at jeg kalder wxwidgets for et "framework". Det er det vel egentligt ikke. I hvertfald ikke et runtime framework som eksempelvis .NET. Men tit henvises der til wxwidgets som et framework fordi det har udviklet sig udover sine funktionaliteter som et "widget toolkit". Men det er og bliver kun et C++ library som man linker til i sine egne C++ programmer.
Avatar billede danm Nybegynder
27. august 2007 - 14:32 #8
Ah.. Vil det sige, at hvis jeg for eksempel laver en kommando der hedder sæt en tekstbox her, så finder wx.lib ud af om det er windows eller linux der kører, og henter så henholdsvis textboxen i windows eller linux formatet fra deres API? Eller ligger hele koden fra komponenterne i wx biblioteket?
Det sidste kunne være ganske sjovt. Mac komponenter ser pænere ud end windows synes jeg, så et windows program med Mac komponenter ville være en god omvæltning..
Avatar billede intel4004 Novice
27. august 2007 - 15:29 #9
Du kan forestille dig wxWidgets som en "wrapper" for den underliggende system-specifikke  GUI API. Altså en API som benytter den underliggende GUI API. Normalt compiler man wxWidgets library til de forskellige platforme hvilket resulterer i at den rigtige kode  benyttes. På windows er det eksempelvis baseret på win32 API'en og på MAC OS X er det native system-kaldt til det OS' GUI API (kender ikke til MAC detaljer). På linux kan man kompile wxwidgets til at kalde forskellige GUI API'er, eksempelvis GTK+.

Så nej, MAC komponenter i et windows program er højst usandsynlig. Måske kunne man manuelt tegne noget som ligner. Men wxWidgets er ikke intelligent i sig selv og er som sagt ikke et "runtime framework".

Scenario på windows:
Man henter wxwidgets library kilden til Microsoft Windows og kompilerer denne. Herefter udvikler man sit eget C++ program ved at bruge wxWidgets API og linke lokalt til sin windows-version af wxWidgets. Det smarte er at ens C++ kode også burde kompile på linux og MAC OS fordi man kun bruger wxWidgets kald i sit kode. Og derfor burde ens GUI have akkurat samme funktionalitet.

Mvh Intel4004
Avatar billede danm Nybegynder
31. august 2007 - 14:40 #10
Tak for hjælpen begge to.. Smid endelig et svar så vi lige kan få lukket tråden.. (o=
Avatar billede intel4004 Novice
31. august 2007 - 15:57 #11
Et svar :)

Kunne du bruge wxWidgets til dit formål?

Mvh Intel4004
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Danske Andelskassers Bank A/S

IT-konsulent

PensionDanmark

ML Engineer

Cognizant Technology Solutions Denmark ApS

Test Manager