Титла: C++ graphics objects проблем с executable file Публикувано от: ddimkin в Oct 31, 2006, 15:41 Здравейте,
студент съм и от 5 седмици програмирам на С#, през живота си не се бях занимавал с такова нещо, но сега се наложи и никак не е зле Започнахме, разбира се с ""Hello world!" , минахме през Fundamental Data Types и сега сме на Graphics Objects. Да вметна само, че от около половин година се занимавам с Линукс, а от около два месеца имам Ubuntu Dapper Drake и все по-рядко ми се налага да превкл. под Уиндоус. Такава беше и идеята ми: лека-полека- към форматиране на уиндоуските дялове...и ето го и проблема: с# учиме по книгата на Cay Horstmann, a тя е мислена за работа под уиндоус, а на упражненията трябва да компилираме под Линукс, така че аз вкъщи се упражнявах също под Линукс и всичко беше о.к. докато не дойдоха обектите и ползването на хедъри и библиотеки, които не са част от стандартния с#. Но дори и това работеше преди да дойдат графичните обекти разбира се библиотеките и хедърите ги ползваме на готово от тук: Source code for all sample programs and the CCC library Big C++ | C++ Essentials: http://horstmann.com/bigcpp.html Първата задача от графичните обекти има следния сорс: #include "ccc_win.h" int ccc_win_main() { point p(1,3); cwin << p << Circle(p, 2.5); return 0; } и съответно на cwin ( който така и не съм виждал още...) трябва да се появи едно кръгче с точица в центъра, но не става...Правя всичко според инструкциите: Before starting to write graphics programs, you should copy two files to your current working directory, namely: /usr/local/share/cccbook3/cccfiles/ccc_x11.cpp /usr/local/share/cccbook3/cccfiles/ccc_shap.cpp копирам всички необходими фаилове, а именно: ccc_win.h, ccc_x11.cpp, ccc_shap.cpp, както и сорсфайа в работната ми директория и компилирам с: c++ -o your_executable your_source ccc_x11.cpp ccc_shap.cpp -L /usr/X11R6/lib -lX11 като естествено замествам с имената на моите фаилове c++ circle.cpp ccc_x11.cpp ccc_shap.cpp -o circle -L /usr/X11R6/lib -lX11 и получавам това: circle.cpp: In function ‘int ccc_win_main()’: circle.cpp:4: error: ‘point’ was not declared in this scope circle.cpp:4: error: expected `;' before ‘p’ circle.cpp:5: error: ‘p’ was not declared in this scope Защо се обръщам към форума, а не към професора ми? Защото нямам лаптоп, а пък не мисля, че той би дошъл до вкъщи да види какво става на конзолата на моето Ubuntu, пък и не знам дали той разбира чак толкоз от различните дистибуции и дали не работи само на Дебиан(на който компилираме и ние и под който успяваме да създадеме executable със същите инструкции..) Kakво върши " -L /usr/X11R6/lib -lX11 " и дали го имам и аз? Както казах, нов съм с Линукс, но искам да напредна, а засега не ми остава друга възможност, освен да компилирам последните задачи с DevC++ под Уиндоус Дано да съм задал правилно въпроса, и дано се намери някой, който да ми помогне...с удоволствие ще допълна информацията, ако нещо съм забравил..само питайте... Ako знаете линкове и съвети за програмиране на с# с текстов редактор и конзола, много бих им се зарадвал merci предварително! Титла: C++ graphics objects проблем с executable file Публикувано от: Lord Bad в Oct 31, 2006, 17:00 Не че нещо, ама откога С# приложения се компилират със С++ компилатор. За тях ти трябва cs компилатора на проекта моно. Аз обаче за (не)щастие съм чел книгата на Кай Хорстман - Обетктно-оринтирано програмиране С++, пък и виждам че сорса ти е на С++ и хич не ми я ясно какви точно ги вършиш. Във всеки случай за да ползваш нещо от Х11 ще трябва да добавиш неговите хедъри(а не уиндоуски), които сигурно са в пакет от вида X11-devel или нещо такова...
Титла: C++ graphics objects проблем с executable file Публикувано от: Hapkoc в Oct 31, 2006, 17:02 Имам чувството, че бъркаш малко C++ и C#. C# е език, проектиран от Microsoft в рамките на .NET Framework-а им. C++ е "надстройка" на C, с добавена поддръжка на обекти и един куп други неща.
Като гледам кода и имената на файловете, които компилираш, по-скоро на C++ програмирате. По въпроса за -L и -l - първото добавя подадената му директория в списъка с директории, в които да търси библиотеки. Второто инструктира linker-а да свърже изпълнимия файл с подадената библиотека. @Lord_Bad, освен ако заглавните (header) файлове на X не са включени в някой от заглавните файлове, които са включени във въпросната програма (в случая ccc_win.h), или бъркам? Ще рече - при '-L /usr/X11R6/lib -lX11' изпълнимия файл ще се свърже с библиотеката X11 и при опита за свързване въпросната библиотека ще бъде потърсена и в /usr/X11R6/lib. Титла: C++ graphics objects проблем с executable file Публикувано от: growchie в Oct 31, 2006, 17:27 Като за начало замени #include "ccc_win.h" с #include "ccc_x11.h"
Не знам защо смяташ че пишеш на c#. В c# няма хедър файлове . Така като правиш нещата ще получиш чист нейтив код на линукс. Ако професорът ти твърди, че това е C# код много добре си направил, че си писал в този форум Титла: C++ graphics objects проблем с executable file Публикувано от: Lord Bad в Oct 31, 2006, 17:59 @Hapkoc,
Напълно е възможно да са там и все пак това win накрая ме кара да си мисля че там има само уиндоуски хедъри. Във всеки случай след като му дава not declared, а не not defined значи каквито и хедъри да са включени никакви ги няма. За -L и -l си напълно прав. За да не му се налага на пича да пише -L всеки път може да си добави пътя в /etc/ld.so.conf и после да пусне програмата ldconfig... Титла: C++ graphics objects проблем с executable file Публикувано от: ZERG в Oct 31, 2006, 20:37 И аз имах същия проблем и не можах да се справя с него.Вопще не тръгнаха тези библиотеки .
Впрочем това е една доста голяма грешка в книгата. Титла: C++ graphics objects проблем с executable file Публикувано от: ddimkin в Oct 31, 2006, 22:28 Благодаря за отговорите и съжалявам, че съм ви заблудил...става въпрос за с++, а аз просто си мислех, че мога по-кратко да го пиша като с#. Открих грешката- в сорса е трябвало да е "Point", a нe "point"...но как да се сетя, като мислех, че аз съм този, който създава обекта Point=.....(....);
Благодаря и за разясненията към командата с++........ Последно нещо...някаква литература да препоръчате? THANX п.п. малко набързо ни ги обясняват нещата и част от логиката естествено ми се губи...та си мисля, ако не прочета допълнително, нито оценка ще изкарам, нито нещо ще запомня...проблема е, че няма много време и трябва бързо да влеза в час, а без добро четиво няма да стане...на Хорстман нещата ще трябва също да ги чета заради лекциите, а и по тях правиме контролни ..... Титла: C++ graphics objects проблем с executable file Публикувано от: Lord Bad в Nov 01, 2006, 00:09 Ми тая книга дето я четеш е абсолютна нула - лично мое мнение.
Добри книги за С++ са: 1.The C++ Programming Language 2.Thinking in C++ 3.Effective C++ 4.More Effective C++ 5.Effective STL 6.The C++ Standard Library : A tutorial and a reference 7.C++ Primer 8.Exceptional C++ Книги има бол, време да се четат обаче няма много Титла: C++ graphics objects проблем с executable file Публикувано от: Hapkoc в Nov 01, 2006, 00:42 Lord_Bad, growchie - на теория сте прави за ccc_win.h vs. ccc_x11.h, на практика - не. :)
Титла: C++ graphics objects проблем с executable file Публикувано от: ZERG в Nov 01, 2006, 07:59
Тези книги само на в интернет ли се намират.Мога ли да си ги закупя че много мразя да си тормозя очите И аз уча по книгата на Кай Хортсман.Найстина не е кои знае какво ама върши работа.Попадал сам и на книги дето българи са ги писали и направо нямам думи.Много лош стил на писане.Да знаете от мене не закупувайте книги с български автори тотално ще се объркате.Просто съвет Титла: C++ graphics objects проблем с executable file Публикувано от: Lord Bad в Nov 01, 2006, 09:53 @Hapkoc,
Гадаех, а не съм екстрасенс. Аз и без друго никога не съм писал нещо директно на win api или x11 api. Но във всеки случай дори и тези хедъри, които той добавя с условните директиви в началото също са си някакви негови. @ZERG, 1, 3, 4 ги има тука издадени, но не са подходящи за начинаещи, особено 3 и 4. За начинаещи препоръчвам Thinking in C++ - тя дори е безплатна за теглене от сайта на автора, заедно с други негови книги. |