kategorie: ANSI C, MUI
[#1] [VBCC] Rawimage.mcc problem z kompilacją
zrobiłem sobie z ikonki png źródło w C.
zainkludowałem odpowiednią klasę i wspomniane źródło:
#include <mui/Rawimage_mcc.h>
#include "img_clock.c"


ale kompilator vc wypluwa mi takie coś:
>       # error Compiler does not support zero-length arrays.
error 292 in line 39 of "mui/Rawimage_mcc.h": #error Compiler does not support zero-length arrays.
>EOF
warning 56 in line 39 of "mui/Rawimage_mcc.h": } expected
unexpected end of file
1 error found!


czy coś jest nie tak w tym nagłówku klasy Rawimage ?:

struct MUI_RawimageData
{
	ULONG ri_Width;
	ULONG ri_Height;
	ULONG ri_Format;
	ULONG ri_Size;

	#if __STDC_VERSION__ >= 199901L
	/* VBCC and newer GCCs
	 */
	ULONG ri_Data[];
	#elif defined(__GNUC__)
	/* GCC 2.x
	 */
	ULONG ri_Data[0];
	#else
	# error Compiler does not support zero-length arrays.
	#endif
};
[#2] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #1

Z tego co wyczytałem w docach do VBCC __STDC_VERSION jest zdefiniowana tylko gdy używaż C99 ( obadaj vbcc.pdf 3.5.10.1 Predefined macros), czyli opcja -c99 musi być włączona, ewentualnie z palca wywal cały blok #if i pozostaw tylko ULONG ri_Data[].

A co do warning o EOF to najlepiej jak na końcu pliku dasz enter, czyli ostatnia linia zawsze powinna być tylko enterem.

Ostatnia aktualizacja: 12.10.2013 12:17:14 przez asman
[#3] Re: [VBCC] Rawimage.mcc problem z kompilacją

@asman, post #2

Rzeczywiście z tym enterem na końcu pliku pomogło, ale z flagą -c99 kompilator mi się wywala, a log server wywala division by zero.
Wywaliłem też cały blok if w pliku nagłówkowym. Pozostawiłem tam tylko ULONG ri_Data[];
ale vc krzyczy, że deklaracja typu ri_Data jest niekompletna, no i w sumie ma rację, bo jak w kwadratowych nawiasach nie ma nic, to powinna być klamra z danymi w środku.
[#4] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #3

ULONG ri_Data[] i tak zostanie zamieniony na pointer do ri_Data (przynajmniej tak myślę), więc możesz dać ULONG* ri_Data.
[#5] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #1

czemu vbcc a nie w pelnie supportowany gcc?
[#6] Re: [VBCC] Rawimage.mcc problem z kompilacją

@asman, post #4

Działa! Dzięki, asman. Kompiluje bez zająknięcia po przeróbce w nagłówku: ULONG* ri_Data;
Ale kompiluję bez flagi -c99, bo przy niej z kolei czepia się warningami innych paru typowych fragmentów, np:

DoMethod(mainwindow, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit);


warning: implicit declaration of function DoMethod.

Lecz jest jedno ale. Myślę, że mój obrazek zamieniony w kod C, jest jeszcze niegotowy, bo zamiast mi go wyświetlić, program wyświetla czarny prostokącik z nampisem: out of memory.

Widzę w przykładowym kodzie Tokaia, że deklaracja zaczyna się tak:

CONST UBYTE _image1_bz2[] = {

	/* header */
	0x00, 0x00, 0x00, 0x20, /* width:    32         */
	0x00, 0x00, 0x00, 0x20, /* height:   32         */
	'B',  'Z',  '2',  '\0', /* format:   ARGB BZ2   */
	0x00, 0x00, 0x07, 0x61, /* datasize: 1889 Bytes */

	/* actual bzip2 compressed data */
	0x42, 0x5A, 0x68, 0x39, 0x31, 0x41, 0x59, ...


a mnie, narzędzia których użyłem wypluły coś co zaczyna się tak:

BYTE _clockimage_raw[] = {
	0x42, 0x5A, 0x68, 0x39, 0x31, 0x41, ...


Czy to przez ten nagłówek? Czy jest on u mnie potrzebny? A jeśli tak, to czy muszę sam go wykminić?

Ostatnia aktualizacja: 12.10.2013 20:42:45 przez R-Tea
[#7] Re: [VBCC] Rawimage.mcc problem z kompilacją

@michal_zukowski, post #5

Ze zwykłego lenistwa. Parę lat temu dużo bawiłem się na Amidze np. jakimś Basic-iem, potem AmigaE, potem włączyłem w AmigaE MUI. Zachwyciłem się MUI, a że przykłady Krashana i inne były w przeważającej części w C, padło wtedy na VBCC za przykładem jakiegoś kursu w Amiga Magazynie.
Teraz po paru ładnych latach odgrzebałem moje niedzielnne hobbystyczne projekty, przekopiowałem ze starego archiwum zrobionego na CD i znalazłem tam, między żródłami, notatkę txt, którą sobie zrobiłem żeby nie zapomnieć jak to wszystko kompilowałem
[#8] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #6

Jesli chodzi o warning to prawdopodobnie brakuje inckluda z deklaracja DoMethod ( jak sprawdziłem u siebie w inkludach z NDK to deklaracja DoMehod znajduje się w clib/alib_protos.h ).

Jeśli chodzi o nagłówek, to ja nie wiem, ale podejrzewam, że tego własnie brakuje, najlepiej będzie jak dodasz odpowiedni nagłówek.
[#9] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #7

polecam "prace nad lenistwem" i przejście na gcc, bo z vbcc pewnie bedzie jeszcze wiecej problemów. no i wpadaj na #ppa jesli chodzi o pytania o mui.

co do kodu tokaia to po prostu rozmiary obrazka sobie dopisz przed wygnerowana bitmapa argb w tablicy + format danych bitmapy (rozpakowana czy spakowana bzipem jak w przykladzie). poza tym to chyba wszystko jest opisane w autodocach



Ostatnia aktualizacja: 13.10.2013 09:19:20 przez michal_zukowski
[#10] Re: [VBCC] Rawimage.mcc problem z kompilacją

@asman, post #8

Dzięki, asman Działa. Ręcznie dopisałem te początkowe dane z rozmiarami i typem i wszystko gra.
A te warningi o DoMethod, to niemożliwe żeby to był brak deklaracji w inkludach, bo przecież wtedy wypisałby mi "unknown identifier" i w ogóle by mi nie skompilował. No i to było, gdy dałem flagę -c99, więc jej nie daję teraz i nie mam żadnych błędów i warningów.

rzookol. Niedzielni programiści potrzebują prostych rzeczy. Kiedyś próbowałem skonfigurować sobie środowisko pod gcc, zainstalowałem GeekGadgets, porobiłem parę innych rzeczy wg artka z Amiga Magazynu, ale natrafiłem na problemy do nieprzeskoczenia samodzielnie.
Później podobnie zrobiłem z VBCC i wszystko zadziałało niemal z marszu.
Ale wezmę sobie do serca to, co napisałeś :)
[#11] Re: [VBCC] Rawimage.mcc problem z kompilacją

@R-Tea, post #10

przeciez sdk jest do sciagniecia i przeklikania pare razy w installatorze :)
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem