פורסם: 05/06/2010 - 20:45
נושא ההודעה: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual studio?
|
היי,
אני מנסה ללנקג' את ffmpeg שקימפלתי עם gcc לחתיכת קוד שמקומפלת תחת ויזואל סטודיו (עם הקומפיילר שלהם 0- ויזואל סטודיו 2010, 64 ביט)
הפעלתי את configure של ffmpeg עם הדגלים הבאים:
configure --enable-memalign-hack --arch=x86_64 --enable-swscale
הקימפול עובר בלי שום בעיות.
ffmpeg כתוב בC, הקוד שלי הוא ב C++, ולכן אני עושה include כך:
קוד: |
extern "C" {
#include <libavcodec\avcodec.h>
#include <libavdevice\avdevice.h>
#include <libavformat\avformat.h>
#include <libavutil\avutil.h>
#include <libswscale\swscale.h>
} |
כשאני מגיע לקימפול של הקוד שלי, אני מקבל את הודעת השגיאה הבאה:
קוד: | error LNK2019: unresolved external symbol av_close_input_file referenced in function "int __cdecl ffmpeg_first(int,char * * const)" (?ffmpeg_first@@YAHHQEAPEAD@Z) |
שמשמעותן היא שהלינקר לא מזהה את הסימבולים (nm של cygwin מוצא אותם בקלות).
קבצי הספרייה הוספו במקום המתאים בויזו'אל סטודיו. (אלו קבצים עם סיומת .a ולא lib)
מה אפשר לעשות כדי לפתור את הבעייה? ניסיתי בערך כל מה שמצאתי.
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 21:05
נושא ההודעה:
|
לקמפל את הקוד שלך ב gcc או לקמפל את הקוד השני ב VC.
יש כמה בעיות, אחד מהן היא ש++C לא אחיד ב ABI שלו בכלל, ולכן אם אתה לא תדע להתאים את ה ABI שלך למה ש GCC עשה או הפוך, אתה לא תצליח לעבוד.
בשל הודעת השגיאה שלך אני חושב שמדובר בבעית ABI.
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:11
נושא ההודעה:
|
אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.
ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.
בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך?
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:11
נושא ההודעה:
|
ה־name mangling של שני הקומפילרים שונה לחלוטין, לכן לא תוכל לקשר קוד C++ של שני הקומפילרים. זה פשוט לא אפשרי. להסברים נוספים קרא כאן:
http://labs.trolltech.com/blogs/2009/08/12/some-thoughts-on-binary-compatibility/
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:23
נושא ההודעה:
|
Anonymous : | אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.
ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.
בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך? |
1. לעבוד עם מהדר אחר שהוא לא VC.
יש כמה בווינדוז.
2. לעבוד בשפות יותר נורמאליות מ ++C
רוב האנשים יודעים לאילו שפות אני מתכוון, אבל אני לא מתכוון לגרום כאן למלחמת שפות, היו מספיק מלחמות השבוע גם בלי זה.
3. לעבוד קשה ולגרום ל ffmpeg להתקמפל ב VC.
ומחקתי את התשובה המקורית שרציתי לשים שהיתה גורמת קצת לעצבים ולרצון להילחם בי כרגיל ...
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:23
נושא ההודעה:
|
הקוד של ffmpeg הוא קוד C טהור, האם זה עוקף את הבעייה של ה name mangling?
האם שימוש בdllים יעקוף את הבעייה? (כלומר, לקמפל את ffmpeg כ dllים)
תודה
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:31
נושא ההודעה:
|
שכחתי סימן קריאה בסוף התודה: תודה!
@ik_5
1. אני לא בטוח שזה יפתור את הבעייה, אני עדיין צריך להשתמש בספריות של מע' ההפעלה.
2. עניין של טעם.. אני גם אוהב את פייטון, אבל לא יעזור לי להשיג את מה שני רוצה לעשות כרגע.
3. מאוד קשה. הקומפיילר של visual studio לא תומך ב C99. המשמעות של צעד כזה היא לייצר פורק מאוד מורכב שייקח המון זמן, לא ייתמך ע"י המפתחים הראשיים, וכנראה גם לא יעבוד..
4. הבחירה בסביבת העבודה וכלי הפיתוח לא תלויה רק בי, אני כנראה הייתי בוחר אחרת (בנתיים הצלחתי להפתר מהתלות ב directX ורוב directshow, כשהשימוש ב ffmpeg אמור לבטל את הצורך בו לחלוטין. בעתיד אולי גם נפתר מVisual studio).
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 22:42
נושא ההודעה:
|
מנחם (לא מחובר) : | הקוד של ffmpeg הוא קוד C טהור, האם זה עוקף את הבעייה של ה name mangling?
האם שימוש בdllים יעקוף את הבעייה? (כלומר, לקמפל את ffmpeg כ dllים)
תודה |
מה, כאילו להשתמש ב־LoadLibrary ואז לעשות את אותה העבודה שהקומפילר עושה? אם אני לא טועה, זה יכשל בדיוק באותה צורה אבל נסה. תבנה ספרייה קטנה ב־mingw או cygwin ואז נסה לטעון אותה ולקרא לפונקציה שעושה hello world. אם לא - כל הזין, אתה תקוע עם gcc עד הסוף המר כמו שעידו אמר.
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 23:06
נושא ההודעה:
|
שאלה, אתה מקמפל על הלינוקס עם GCC ואז מעביר את זה לחלונות?
_________________ קוד: | Gentoo.
Only two things are infinite, the universe and human stupidity and I'm not sure about the former - Albert Einstein
help save the world, join us. |
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 23:22
נושא ההודעה:
|
אם תקמפל את ffmpeg ל DLL אז תוכל להשתמש ב DLL (שיצרת ב GCC) עם כל תוכנית שתרצה. בדוק.
וכמו שאמרו כבר לפני, שימוש של ספריות (libs) ממהדר אחד למהדר שני לעולם לא יעבוד - צורת הבניה (ובעיקר השמות (והפורמט שלהן) של הפונקציות) הוא שונה ממהדר למהדר.
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 23:24
נושא ההודעה:
|
@elcuco
אני אנסה את זה (כנראה שמחר..)
@wobnl
אני מקמפל את זה בחלונות עם cygwin (לפי המדריכים באתר)
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page
ד"א, ניסיתי להשתמש גם ב cygwin וגם ב mingw/msys - אותה תוצאה
|
|
חזרה לתוכן הדיון |
פורסם: 05/06/2010 - 23:25
נושא ההודעה:
|
@אורח
מצויין. אני אעשה את זה מחר ואעדכן אתכם
|
|
חזרה לתוכן הדיון |
פורסם: 06/06/2010 - 00:05
נושא ההודעה:
|
מנחם (לא מחובר) : | ד"א, ניסיתי להשתמש גם ב cygwin וגם ב mingw/msys - אותה תוצאה |
דבר ראשון - msys. לא עם cygwin.
אני הייתי חושד ב- cdecl. מה nm אומר על הספריה שלך? מה אומר dependancy walker (אני לא יודע אם הוא יודע לנתח ספריות סטטיות)?
שחר
http://www.dependencywalker.com/
_________________ שחר שמש
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 00:00
נושא ההודעה:
|
מנחם, מה נסגר? זה עובד אצלך או לא?
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 00:51
נושא ההודעה:
|
כשלב ביניים הורדתי את media player classic, כדי לראות איך הם מלנקג'ים. (ממשק המשתמש שלהם מקומפל עם visual studio 2008, והם משתמשים ב ffmpeg שמקומפל ב gcc 4.4.1)
הבנייה ב 64 ביט כרגע לא עובדת (יש להם סקריפט שמוריד עוד כמה חלקים מ tdm, הפעם ל 64 ביט).
היה לי יום קצת עמוס- חזרתי לעבוד על זה לפני רבע שעה בערך, ובגלל שאני לא מצליח להתרכז יותר, אנסה להמשיך מחר.
בכל מקרה, ובלי תלות במתי שיהיו תוצאות, אני מבטיח לעדכן.
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 08:57
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu
|
או קיי, מספר דברים:
- האם הקוד שלך מקומפל ב־64 ביט? אם לא זה לא יעבוד.
הייתי ממליץ להתחיל מ־DLL, בצרה מפתיעה זה יותר פשוט, למעשה, אני משתמש בכמה ספריות C הבנויות עם gcc כשאני עובד עם MSVC, ראה כאן:
http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs
למעשה, אין בעיה לעשות לינק של ספריות C מקומפלות עם gcc ו־msvc.
-----------
הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++ כן דב"כ תואם מבחינת ABI.
_________________ קזית 3 - קנופיקס עברי.
BiDiTeX - תמיכה בכיווניות ל-LaTeX.
CppCMS - פיתוח ל־web ב־++C.
גם לי יש בלוג
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 09:50
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu
|
ארתיום : |
הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++ כן דב"כ תואם מבחינת ABI. |
אחד הדברים שאני מסביר כבר קרוב ל10 שנים בלמה לא לבחור לתכנת ב VC הוא כי שום דבר לא תואם את ה ABI של VC אלא אם נכתב ב VC.
הבעיה כל כך חמורה, עד שמיקרוסופט עצמם מספקים לך חיבור API של Windows ככקבצים חצי מקומפלים (בסגנון קובץ ה o בלינוקס), כי אחרת פיזית לא היית יכול להתממשק ל API (שכתוב ב C) ב Windows. כן, אני מדבר על הקבצי obj שמגיעים עם VC. במידה והם לא קיימים, למרות שתספק לו מידע איך לקשר את הפונקציות, הוא לא יצליח (ראיתי מספיק חכמולוגים שחשבו שהם חמים עם זה והבינו את זה בדרך הקשה ביותר שיש -> איבדו את המקום עבודה שלהם אחרי שהם לא הצליחו כמה חודשים לגרום לקוד שלהם להתהדר והמשיכו בשלהם). אם בגרסאות חדשות יותר של VC זה סוף כל סוף סודר והוא עובד בגרסה שזה סודר בה, אז תתעלם, אבל ב VC6 שאני הכרתי זו היתה בעיה קשה מאוד.
יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal ( לא השפה ! אלא סדר הפרמטרים), ו StdCall, בעוד שביוניקס סדר הפרמטרים הנהוג הוא cdecl . אבל אם הסדר פרמטרים לא היה נכון, הוא היה עדיין מצליח לעשות קישור, רק הטעינה עצמה בזמן ריצה היתה קורסת לו, כי הוא לא היה מצליח להעביר נכון את המידע.
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 10:22
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu
|
ik_5 : | יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal (לא השפה ! אלא סדר הפרמטרים), ו StdCall, בעוד שביוניקס סדר הפרמטרים הנהוג הוא cdecl . אבל אם הסדר פרמטרים לא היה נכון, הוא היה עדיין מצליח לעשות קישור, רק הטעינה עצמה בזמן ריצה היתה קורסת לו, כי הוא לא היה מצליח להעביר נכון את המידע. |
לא לגמרי נכון. חלק מנושא ה-parameter passing יש גם name mangeling. ב-Pascal, לדוגמא, הקומפיילר מוסיף @ ומספר אחרי שם הפונקציה, שמתאר את אורך הפרמטרים שמועברים לפונקציה. זה נובע, חלקית, מהעובדה שב-pascal calling convention, הפונקציה היא זו שמסירה את הפרמטרים מהמחסנית, ועל כן חשוב שהקורא והפונקציה יהיו מתואמים, לכל הפחות, לגבי מה הגודל הכולל של הפרמטרים.
על פי הודעת השגיאה, נראה ש-vc כן מצפה ל-name mangeling מסוג כלשהו, וזה מקור בעיית הלינקוג'. לא ברור לי לגמרי מה צריך לעשות כדי לפתור אותה.
שחר
_________________ שחר שמש
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 13:08
נושא ההודעה:
|
Anonymous : | אני לא חושב שאני יכול להמנע משימוש בשני קומפיילרים שונים.
אני משתמש בספריות של מערכת ההפעלה (opengl.lib ו wsock2.lib, וקצת ב directshow), ו openCV שקומפל בVS.
ffmpeg מתקמפל רק עם gcc, בגלל שויז'ואל סטודיו לא תומך בצורה מלאה בC99.
בהנחה שיש אי תאימות בabi, האם קמפול ffmpeg כ shared library ושימוש ב dllים יפתור את הבעייה?
האם יש דרך לנרמל את ה abi שלהם באיזושהי דרך? |
לא הבנתי מה המניעה לקמפל הכל עם gcc. הספריות של מ"ה נגישות גם עם mingw, וגם directshow (לא יודע כמה הבעיות שמוצגות שם עוד בתוקף, אבל יש גם הסברים איך לקמפל ואיך ללנקג')...
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 14:21
נושא ההודעה: Re: איך מלנקג'ים סיפריה סטאטית מgcc לקוד שקומפל ב visual stu
|
ik_5 : | ארתיום : |
הערות לכל אלה שאמרו לפני, קוד C בניגוד לקוד C++ כן דב"כ תואם מבחינת ABI. |
אחד הדברים שאני מסביר כבר קרוב ל10 שנים בלמה לא לבחור לתכנת ב VC הוא כי שום דבר לא תואם את ה ABI של VC אלא אם נכתב ב VC.
|
זה פשוט לא נכון... קודם כל אין בעיה לקמפל לספריה עם gcc ולעבוד איתה עם msvc ולהפיך כל־עוד מדובר ב־C ולא C++ וכמובן גם שניהם משתמשים במכנה משותף של השפות (קרי ללא C99 ש־msvc לא תומך בו).
הקישור שנתתי הוא הוכחה לזה.
ציטוט: | יותר מזה, בWindows סדר הפרמטרים הנהוג הוא Pascal (לא השפה ! אלא סדר הפרמטרים), ו StdCall, |
זה לא ממש קשור, מדובר ב־API של win32 וגם gcc וגם msvc מתאימים את ה־calling convention בהתאם.
פונקציות **רגילות** הן לא stdcall, ד"א חלק מקומפיילרים של C++ של windows משתמשים גם ב־stdcall לקריאות פוקנקציות C++ (לא C).
_________________ קזית 3 - קנופיקס עברי.
BiDiTeX - תמיכה בכיווניות ל-LaTeX.
CppCMS - פיתוח ל־web ב־++C.
גם לי יש בלוג
|
|
חזרה לתוכן הדיון |
פורסם: 07/06/2010 - 18:49
נושא ההודעה:
|
אוקיי, פתרתי את זה בצורה נקניקית לגמרי.
הורדתי את הגרסה האחרונה שקומפלה לwin64 מכאן (גרסה ישנה, אפריל 2010):
http://ffmpeg.arrozcru.org/autobuilds/ffmpeg/mingw-w64/dev/shared/
הוספתי את ה libים, ועכשיו הכל מתקמפל.
באופן כללי:
הבחור שעקבתי אחרי התיעוד שלו החליט שתמיכה ב mingw/msys לא שווה את המאמץ, ומעכשיו מקמפל תחת לינוקס באופן בלעדי:
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page
כך:
http://ffmpeg.arrozcru.org/wiki/index.php?title=Cross-compiling
השלב הבא יהיה לקמפל את זה תחת לינוקס בעצמי (אולי עם vm, כדי לא לעשות restart כל פעם).
בנתיים יש פתרון.
תודה רבה לכולם!
|
|
חזרה לתוכן הדיון |
פורסם: 09/06/2010 - 02:19
נושא ההודעה:
|
אוקיי, הפעם פתרתי את זה בצורה מערכתית, וזה לקח יום שלם.
התקנתי מכונה וירטואלית לפי ההנחיות בויקי, והתחלתי לחפור.
התוצאה הסופית היא זו:
(זה העתקה והדבקה מהפורום
http://ffmpeg.arrozcru.com/forum/viewtopic.php?f=1&t=1416&p=4794&sid=64e97150c71d2f8b8407cba84ef2db02#p4794
שם שאלתי לראשונה)
I did it!
I've used cross compilation from an ubuntu virtual machine, as per Ramiro instructions in the wiki, plus some home-made scripts, and some patches.
my directory structure is the following:
קוד: | ffmpeg
-->build
-->ext
-->package
-->scripts
-->svn |
Code patches:
קוד: | Index: libswscale/swscale_template.c
===================================================================
--- libswscale/swscale_template.c (revision 30532)
+++ libswscale/swscale_template.c (working copy)
@@ -2255,7 +2255,7 @@
"shrl $9, %%esi \n\t" \
static inline void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
- long dstWidth, const uint8_t *src, int srcW,
+ x86_reg dstWidth, const uint8_t *src, int srcW,
int xInc)
{
#if ARCH_X86 && CONFIG_GPL
@@ -2404,7 +2404,7 @@
}
static inline void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst,
- long dstWidth, const uint8_t *src1,
+ x86_reg dstWidth, const uint8_t *src1,
const uint8_t *src2, int srcW, int xInc)
{
#if ARCH_X86 && CONFIG_GPL |
configuration script:
קוד: | cd ../build/
unset PKG_CONFIG_PATH PKG_CONFIG_ALLOW_SYSTEM_CFLAGS PKG_CONFIG_ALLOW_SYSTEM_LIBS
export PKG_CONFIG_LIBDIR="x86_64-w64-mingw32/lib/pkgconfig"
../svn/configure --cross-prefix=x86_64-w64-mingw32- --cc="ccache x86_64-w64-mingw32-gcc" --extra-cflags=-Dstrtod=__strtod --arch=x86_64 --target-os=mingw32 --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-libgsm --enable-pthreads --enable-libvorbis --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-shared
cd ../scripts/ |
packaging script:
קוד: | echo creating directories
mkdir ~/ffmpeg/package/bin
mkdir ~/ffmpeg/package/dll
mkdir ~/ffmpeg/package/lib
mkdir ~/ffmpeg/package/lib/pkgconfig
mkdir ~/ffmpeg/package/include
mkdir ~/ffmpeg/package/include/libswscale
mkdir ~/ffmpeg/package/include/libavutil
mkdir ~/ffmpeg/package/include/libavformat
mkdir ~/ffmpeg/package/include/libavdevice
mkdir ~/ffmpeg/package/include/libavcodec
cp Dll2lib.bat ~/ffmpeg/package/dll/
echo copying binaries
cp ~/ffmpeg/build/*.exe ~/ffmpeg/package/bin/
# cp ~/ffmpeg/build/libavcodec/libavcodec.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavdevice/libavdevice.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavfilter/libavfilter.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavformat/libavformat.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavutil/libavutil.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libavfilter/libavfilter.a ~/ffmpeg/package/lib/
# cp ~/ffmpeg/build/libswscale/libswscale.a ~/ffmpeg/package/lib/
echo copying dlls and defs
cp ~/ffmpeg/build/libavcodec/avcodec.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavcodec/avcodec-52.def ~/ffmpeg/package/dll/avcodec.def
cp ~/ffmpeg/build/libavdevice/avdevice.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavdevice/avdevice-52.def ~/ffmpeg/package/dll/avdevice.def
cp ~/ffmpeg/build/libavfilter/avfilter.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavfilter/avfilter-1.def ~/ffmpeg/package/dll/avfilter.def
cp ~/ffmpeg/build/libavformat/avformat.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavformat/avformat-52.def ~/ffmpeg/package/dll/avformat.def
cp ~/ffmpeg/build/libavutil/avutil.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libavutil/avutil-50.def ~/ffmpeg/package/dll/avutil.def
cp ~/ffmpeg/build/libswscale/swscale.dll ~/ffmpeg/package/dll/
cp ~/ffmpeg/build/libswscale/swscale-0.def ~/ffmpeg/package/dll/swscale.def
echo copying libavcodec headers
cp ~/ffmpeg/svn/libavcodec/avcodec.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/avfft.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/dxva2.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/opt.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/vaapi.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/vdpau.h ~/ffmpeg/package/include/libavcodec/
cp ~/ffmpeg/svn/libavcodec/xvmc.h ~/ffmpeg/package/include/libavcodec/
echo copying libavdevice headers
cp ~/ffmpeg/svn/libavdevice/avdevice.h ~/ffmpeg/package/include/libavdevice/
echo copying libavformat headers
cp ~/ffmpeg/svn/libavformat/avformat.h ~/ffmpeg/package/include/libavformat/
cp ~/ffmpeg/svn/libavformat/avio.h ~/ffmpeg/package/include/libavformat/
echo copying libavutil headers
cp ~/ffmpeg/svn/libavutil/avutil.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/adler32.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/attributes.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/avstring.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/base64.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/common.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/crc.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/error.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/fifo.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/intfloat_readwrite.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/log.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/mathematics.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/md5.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/mem.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/pixdesc.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/pixfmt.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/rational.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/svn/libavutil/sha1.h ~/ffmpeg/package/include/libavutil/
cp ~/ffmpeg/build/libavutil/avconfig.h ~/ffmpeg/package/include/libavutil/
echo copying libswscale headers
cp ~/ffmpeg/svn/libswscale/swscale.h ~/ffmpeg/package/include/libswscale/
echo copying ext headers
cp ~/ffmpeg/ext/*.h ~/ffmpeg/package/ |
and finally, dll to lib conversion:
קוד: |
@echo run this utility from Visual studio command prompt
lib /def:avcodec.def /out:avcodec.lib /machine:x64
lib /def:avdevice.def /out:avdevice.lib /machine:x64
lib /def:avfilter.def /out:avfilter.lib /machine:x64
lib /def:avformat.def /out:avformat.lib /machine:x64
lib /def:avutil.def /out:avutil.lib /machine:x64
lib /def:swscale.def /out:swscale.lib /machine:x64
move /Y *.lib ../lib/ |
and the libraries finally link.
|
|
חזרה לתוכן הדיון |
|