לגל בקשר לTIFF ולJPEG

ramib6

New member
לגל בקשר לTIFF ולJPEG

שלום לך המוןם תודה על העזרה עד כה אם בא לך לראות ולהגיד מה דעתך אשמח אני עובד עם mainsoft שמקמפל ליוניקס סולרריס. יצרתי libtiff.a libpng.a libjpeg.a השתמשתי בהורדה של ה SDK שמתי את קבצי ה H בספרייה מתאימה הספרייה בשם il ובה הממשקים של il.h ilut.h ilu.h il_wrap.h שמתי את הספריות שהם נותנים ב ספריית הLIB שלהם בספרייה מתאימה libil.sp libilu.so libilut.so והוספתי libjpeg.a libtiff.a libpng.a כתבתי מיין שנראה מאד פשוט #include<stdio.h> #include<il\ilu.h> #include<il\il_wrap.h> #include<il\il.h> #include<il\ilut.h> /*#include <il.h> #include <ilu.h> #include <ilut.h>*/ void main() { printf("Startint rami2 Test\n"); ilImage A; A.Load("a.tif"); A.Save("a.jpg") // ilLoadImage("a.tif"); // ilSaveImage("a.jpg"); } כלומר שימוש פשוט במה שמוגדר בHEADER FILE וניסיתי לקמפל הקומפיילר צועק - Include\il\il.h(339) : Error: A value of type void is not allowed. כשהוא מצביע על השורות ILAPI ILboolean ILAPIENTRY ilClearImage(ILvoid); מה דעתך מה צריך לשנות זה אמור כאילו שיש ספריות לעשות לינק ולעבוד איתם וזה ממש לא כך. אשמח מאד אם תציץ ותחווה דעתך רמי בוכניק
 

galh

New member
לא עבדתי עם MainSoft למרות ששמעתי

עליהם, במיוחד לאחר שהקוד של חלונות דלף לרשת.
אם איזה קומפיילר אתה משתמש?! נראה שהוא לא מעודכן לתקן ANSI C או משהו דומה כי הוא לא מוכן לקבל את void בתור הגדרה של פונקציה שלא מקבלת פרמטרים. תנסה להוסיף:
#define (ILvoid) ()​
מתחת לשורה:
typedef void ILvoid;​
 

ramib6

New member
אני חושב שזה עובד עם gcc

בכל מקרה אנסה לךבצע מה שהצעת ואומר לך מה קרה המון תודה בינתיים רמי אם נניח אני רוצה לעשוןת את זה עם MAKEn רגיל זה פשוט?? מה כדאי לעשות??? רמי
 

galh

New member
תנחומי... ../images/Emo140.gif

אני לא יודע מה הידע שלך, אבל לא צריכה להיות לך בעיה לקמפל את הספרייה (עם gcc) ישירות בסביבת יוניקס. אם התוכנית שלך מורכבת מקובץ אחד בלבד, אז גם ה- Makefile יהיה פשוט. מה שכן, אני אשתדל לבדוק את הנושא של CC.
 

ramib6

New member
לא עבד שוב מזכיר את הטעות

X:\gpp24\Test\_Include\il\il.h(355) : Error: A value of type void is not allowed. כשזה בא על שורה מהסוג ILAPI ILboolean ILAPIENTRY ilDefaultImage(ILvoid); ניסיתי להוסים #ifndef ILAPI #define ILAPI וגם לא עזר רמי
 

galh

New member
מה לא עבד?

כנראה שהקומפיילר שלך (CC) לא תומך בהצהרה מסוג:
int foo(void);​
ה- define שהצעתי אמור לפתור את הבעיה, מה הודעת השגיאה במקרה הזה? ה- ILAPI מגדיר את ה- calling convension. הוא לא קשור להודעת השגיאה.
 

ramib6

New member
שגיאה דומה

X:\gpp24\Test\_Include\il\ilu.h(150) : Error: A value of type void is not allowed. גם לשורות כאלה ILAPI ILboolean ILAPIENTRY iluEmboss(ILvoid); וגם לשורות ILAPI ILvoid ILAPIENTRY ilCopyPixels(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILuint Height, ILuint Depth, ILenum Format, ILenum Type, ILvoid *Data);
 

galh

New member
אז תוריד ת' include של ilu.

אתה לא משתמש בפונקציות שלו, נכון? תעשה include רק ל- il שזה מה שאתה צריך.
 

ramib6

New member
ניסיתי לא עבד

הבעה היא גם ב il השורת שכתבתי עליהם הם מ il.h אגב בדקתי תוכנית בצד שהתה עם פונקציה void f(void) והיא עבדה ורצה.
 

galh

New member
הסיומת של שני הקבצים זהה?

של התוכנית המקורית ותוכנית הבדיקה?
 

ramib6

New member
אני בינתיים רק עם תוכניק בדיקה

אגב הספריות אמורות לעבוד על סולריס??. בקוד ריק כשאני מנסה ללנקג את הספריות הוא צועק ld: fatal error VMLN0000: file /users/dev/ramib/gpp24/Test/lib2/libIL.so: wrong ELF machine type: EM_386 המון תודה על הסבלנות רמי
 

vinney

Well-known member
אתה צריך לקמפל על סולריס

כדי שזה יעבוד, לכל מכונה אסמבלי אחר, לכן אם אתה לוקח קובץ SO שקומפל על מעבד x86, ושם אותו על סולאריס, זה מה שתקבל. לגבי הVOID קודם, תבדוק את הDEFINE שלך שם אם הוא לא כולל כבר בתוכו טיפוס, נדמה לי שיש לך פעמיים טיפוס מוחזר לפונקציה בגלל הDEFINE הזה, וזה מה שעושה לך את הבעיה...
 
למעלה