我嘗試建立圖書館,並得到:FFmpeg的:未定義的引用「主」
undefined reference to 'main' collect2: ld returned 1 exit status
這是一個.c文件我在JNI文件夾補充說:
#include <stdlib.h>
#include "creator.h"
// Use to safely invoke ffmpeg multiple times from the same Activity
JNIEXPORT void JNICALL Java_com_appunite_ffmpeg_FFmpegCreator_run(JNIEnv *env, jobject obj, jobjectArray args)
{
int i = 0;
int argc = 0;
char **argv = NULL;
if (args != NULL) {
argc = (*env)->GetArrayLength(env, args);
argv = (char **) malloc(sizeof(char *) * argc);
for(i=0;i<argc;i++)
{
jstring str = (jstring)(*env)->GetObjectArrayElement(env, args, i);
argv[i] = (char *)(*env)->GetStringUTFChars(env, str, NULL);
}
}
main(argc, argv);
}
這是一個.h文件:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_appunite_ffmpeg_FFmpegCreator */
#ifndef _Included_com_appunite_ffmpeg_FFmpegCreator
#define _Included_com_appunite_ffmpeg_FFmpegCreator
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_appunite_ffmpeg_FFmpegCreator
* Method: run
* Signature: ([Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_appunite_ffmpeg_FFmpegCreator_run(JNIEnv *, jobject, jobjectArray);
#ifdef __cplusplus
}
#endif
#endif
當我評論main(argc,argv) - 構建成功,否則 - 出現此錯誤。 任何人都可以幫助我嗎?
你想在這裏做什麼? 'main'通常不會被你的代碼調用 - 它是你程序的入口點。你是否試圖從Java調用這個C++代碼?在這種情況下,你的'main'應該放在一個'.java'文件中,你將使用'$ java JavaFileName.java'運行你的程序。 您正在收到鏈接錯誤,因爲您正在調用'main'而未定義它。 – Blake 2013-03-13 15:16:47
定義的'main'函數在哪裏?共享對象沒有與應用程序相同的「main」函數,所以如果您基於某些示例代碼,應該嘗試找到爲Android編寫的內容。 – Michael 2013-03-13 15:19:35
您是否定義了「主」功能?該代碼只准備argc和argv並將它們傳遞給main()。 – 2013-03-13 15:19:40