2017-12-06, 10:02
  #1
Medlem
Linguass avatar
Jag är nybörjade när det kommer till C++ och håller på att försöka lära mig grunderna.

Det jag stör mig lite på är de där biblioteken som skrivs högst upp i filen. Jag skapade ett nytt skript i linux som var menat att ladda ner en text-fil på min server till datorn me dmålet att det ska funka i både linux och windows. När jag skulle omvandla den till en .exe fil så fick jag felmeddelande om att <windows.h> och <urllib.h> saknades. Efter att ha sökt runt fick jag reda på att dessa inte går att ladda ner utan endast finns i VC++ till Windows. Jag försökte en annan variant och fick då istället att curllib saknades...

Alltså, vad är det här? Fungerar program som skapats i Linux endast i Linux? Det blir ganska problematiskt för mig isåfall som sitter i linux men vill skapa program för främst windows...
Citera
2017-12-06, 11:19
  #2
Bannlyst
Citat:
Ursprungligen postat av Linguas
Det jag stör mig lite på är de där biblioteken som skrivs högst upp i filen. Jag skapade ett nytt skript i linux som var menat att ladda ner en text-fil på min server till datorn me dmålet att det ska funka i både linux och windows. När jag skulle omvandla den till en .exe fil så fick jag felmeddelande om att <windows.h> och <urllib.h> saknades. Efter att ha sökt runt fick jag reda på att dessa inte går att ladda ner utan endast finns i VC++ till Windows. Jag försökte en annan variant och fick då istället att curllib saknades...

Använder du ett bibliotek som inte finns bland C++ inbyggda, måste det finnas en version för alla system du tänker kompilera för. Och om du inte kompilerar statiskt, med -static i g++ och något menyval någonstans i VC++, måste dessutom biblioteket finnas på datorn hos alla användare som kör programmet.

windows.h innehåller funktioner helt specifika för Windows, och finns inte för Linux. Skriv om koden och byt ut alla funktioner som du har använt från det biblioteket, mot funktioner från något mer generellt bibliotek. Boost verkar vara populärt i C++ och smockat med lite allt möjligt.

Här finns curl.

Citat:
Ursprungligen postat av Linguas
Alltså, vad är det här? Fungerar program som skapats i Linux endast i Linux? Det blir ganska problematiskt för mig isåfall som sitter i linux men vill skapa program för främst windows...

Ett programfil som kompilerats för Linux fungerar bara i Linux. Kompilera en EXE för varje system du ska köra programmet på, t.ex. en Linux- och en Windows-EXE. Men det går att krosskompilera, så att man t.ex. inte behöver en Windowsdator för att skapa ett Windowsprogram. Kolla http://www.cplusplus.com/forum/unices/70416/#msg379170...

...eller bespara dig själv mycket installationer och komplikationer, och installera Cygwin, som kör Linuxprogram (egentligen POSIX, som är samlingsnamnet för Linux, Mac OS X, UNIX m.m.) under Windows. En användare som ska köra programmet behöver inte hela Cygwin, bara cygwin1.dll, som du kan skicka med EXE:n.
__________________
Senast redigerad av SuperSizeMe 2017-12-06 kl. 11:48.
Citera
2017-12-06, 11:26
  #3
Medlem
Citat:
Ursprungligen postat av Linguas
Alltså, vad är det här? Fungerar program som skapats i Linux endast i Linux? Det blir ganska problematiskt för mig isåfall som sitter i linux men vill skapa program för främst windows...

Om man använder Windows 10 så kan man installera Windows Subsystem for Linux istället. Då kan man köra linuxprogram utan att kompilera om dem.

Men vill man bygga Windowsprogram i C++ på Linux så finns även MinGW. Men MinGW kan man göra vanliga windowsprogram som inte kräver varken Cygwin eller Windows Subsystem for Linux.
Citera
2017-12-06, 11:27
  #4
Medlem
Citat:
Ursprungligen postat av Linguas
Jag är nybörjade när det kommer till C++ och håller på att försöka lära mig grunderna.

Det jag stör mig lite på är de där biblioteken som skrivs högst upp i filen. Jag skapade ett nytt skript i linux som var menat att ladda ner en text-fil på min server till datorn me dmålet att det ska funka i både linux och windows. När jag skulle omvandla den till en .exe fil så fick jag felmeddelande om att <windows.h> och <urllib.h> saknades. Efter att ha sökt runt fick jag reda på att dessa inte går att ladda ner utan endast finns i VC++ till Windows. Jag försökte en annan variant och fick då istället att curllib saknades...

Alltså, vad är det här? Fungerar program som skapats i Linux endast i Linux? Det blir ganska problematiskt för mig isåfall som sitter i linux men vill skapa program för främst windows...

Att skriva plattformsoberoende kod i C/C++ kan vara knepigt. Säkert onödigt svårt för dina ändamål om jag får gissa.

Har du övervägt Python/Ruby eller rent av Java?
Citera
2017-12-06, 12:04
  #5
Medlem
Linguass avatar
Citat:
Ursprungligen postat av Stoffe16_w
Att skriva plattformsoberoende kod i C/C++ kan vara knepigt. Säkert onödigt svårt för dina ändamål om jag får gissa.

Har du övervägt Python/Ruby eller rent av Java?

Tackar samtliga för svar.

Jag kan grunderna och lite till i Python. Jag gillar det men ogillar samtidigt starkt att användaren måste ha python installerat för att kunna köra programmen i Windows. Det var det som fick mig att titta närmare på C++. Nu känner jag mig dock bara väldigt förvirrad.
Citera
2017-12-06, 13:11
  #6
Medlem
RostigHinks avatar
Citat:
Ursprungligen postat av Linguas
Jag är nybörjade när det kommer till C++ och håller på att försöka lära mig grunderna.

Det jag stör mig lite på är de där biblioteken som skrivs högst upp i filen. Jag skapade ett nytt skript i linux som var menat att ladda ner en text-fil på min server till datorn me dmålet att det ska funka i både linux och windows. När jag skulle omvandla den till en .exe fil så fick jag felmeddelande om att <windows.h> och <urllib.h> saknades. Efter att ha sökt runt fick jag reda på att dessa inte går att ladda ner utan endast finns i VC++ till Windows. Jag försökte en annan variant och fick då istället att curllib saknades...

Alltså, vad är det här? Fungerar program som skapats i Linux endast i Linux? Det blir ganska problematiskt för mig isåfall som sitter i linux men vill skapa program för främst windows...
Till windows ska det finnas en runtime-DLL för C++ om jag inte missminner mig. Brukar följa med spel jag installerar så jag har flera versioner av den. Nu har jag glömt vad den heter dock. Jag tar inte i windows med tång när det gäller programvaruutveckling utan det är linux som gäller. GCC innehåller allt man behöver för att göra portabla program, det kan man inte säga att VC++ har.

Eventuellt finns den DLL att ladda hem från M$.
Citera
2017-12-06, 13:26
  #7
Bannlyst
Citat:
Ursprungligen postat av Linguas
Jag kan grunderna och lite till i Python. Jag gillar det men ogillar samtidigt starkt att användaren måste ha python installerat för att kunna köra programmen i Windows. Det var det som fick mig att titta närmare på C++.

Jamendåså, hemskt onödigt att lära sig C++ av den anledningen.

https://stackoverflow.com/questions/12339671/how-to-compile-python-script-to-binary-executable
https://stackoverflow.com/questions/6235123/python-executables-py2exe-or-pyinstaller
__________________
Senast redigerad av SuperSizeMe 2017-12-06 kl. 13:36.
Citera
2017-12-06, 20:53
  #8
Medlem
Citat:
Ursprungligen postat av SuperSizeMe
Jamendåså, hemskt onödigt att lära sig C++ av den anledningen.

https://stackoverflow.com/questions/12339671/how-to-compile-python-script-to-binary-executable
https://stackoverflow.com/questions/6235123/python-executables-py2exe-or-pyinstaller

Om man vill skapa program som är tjocka och sega eller beroende på vissa bibliotek som inte alla har, visst, då ska man köra py2exe.

Python är det perfekta språket om man vill prova en algoritm och hinner/orkar inte skriva nånting ordentligt, annars är det olämpligt i de flesta fall, särskilt när det gäller att släppa ut ett äkta program till användare. Det går inte att låtsas att c++ inte är hundratals lämpligare i det fallet.

Att skriva platformsoberoende kod på C++ är inte svårt alls. Det gäller bara att vara försiktig om sig och inte använda bibliotek som programmet inte borde bero på om man ska köra det på en annan dator. Om biblioteket heter windows.h är det väl en dålig idé att använda funktioner ur det?
Citera
2017-12-06, 22:01
  #9
Medlem
Qt gör det enkelt att göra platformsoberoende program i c++, betydligt enklare att göra dem också.
Citera
2017-12-07, 00:16
  #10
Bannlyst
Citat:
Ursprungligen postat av kanes272
Python är det perfekta språket om man vill prova en algoritm och hinner/orkar inte skriva nånting ordentligt, annars är det olämpligt i de flesta fall, särskilt när det gäller att släppa ut ett äkta program till användare. Det går inte att låtsas att c++ inte är hundratals lämpligare i det fallet.

Hela webben är scriptspråk som Flash, JavaScript, PHP och Ruby, och i framtiden kommer vi att köra allt på webben. Jag delar din entusiasm för att skydda plattformen, men har man dubbelt så bra omdöme som Bill Gates tycker jag man i nödfall kan släppa ett script förklätt som en EXE. Det handlar trots allt bara om att programmen blir långsammare och större med en faktor av 25.
Citera
2017-12-07, 00:45
  #11
Medlem
Citat:
Ursprungligen postat av SuperSizeMe
Hela webben är scriptspråk som Flash, JavaScript, PHP och Ruby, och i framtiden kommer vi att köra allt på webben. Jag delar din entusiasm för att skydda plattformen, men har man dubbelt så bra omdöme som Bill Gates tycker jag man i nödfall kan släppa ett script förklätt som en EXE. Det handlar trots allt bara om att programmen blir långsammare och större med en faktor av 25.

Pröva släppa ut ett AAA-spel skrivet på Python, eller berätta om fördelarna med JS för ett par rymdforskare, eller gå och tala om "allt körs på webben i framtiden" för de som utvecklade datorn eller mobilen som du just nu använder för att svara på mig. Du kommer säkert skrattas åt. C++ och alla lowlevel-språk kommer väl till pass och de kommer göra det för evigt.
Citera
2017-12-07, 18:16
  #12
Medlem
Linguass avatar
Citat:
Ursprungligen postat av kanes272
Pröva släppa ut ett AAA-spel skrivet på Python, eller berätta om fördelarna med JS för ett par rymdforskare, eller gå och tala om "allt körs på webben i framtiden" för de som utvecklade datorn eller mobilen som du just nu använder för att svara på mig. Du kommer säkert skrattas åt. C++ och alla lowlevel-språk kommer väl till pass och de kommer göra det för evigt.

Jag ger dig en +1

Cirka 5 minuter efter att jag skrev mitt senaste svar hittade jag pyinstaller och provade att omvandla en .py fil till .exe vilket gick utmärkt. Segheten och storleken som uppstod som ett resultat var dock inte att leka med...
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in