gpt4 book ai didi

android - FFmpeg:对 'main' 的 undefined reference

转载 作者:行者123 更新时间:2023-11-30 03:43:29 25 4
gpt4 key购买 nike

我尝试构建库并获得:

undefined reference to 'main' collect2: ld returned 1 exit status

这是我在 jni 文件夹中添加的 .c 文件:

#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) - 构建成功,否则 - 出现此错误。谁能帮帮我?

最佳答案

https://github.com/jhotovy/android-ffmpeg/blob/master/Project/jni/ffmpeg_android/ffmpeg_android.c 中的解决方案正在做一些奇怪的事情。

它作为 Java 程序运行,调用 ffmpeg_android.c 中的 C 代码,该代码调用 ffmpeg C main 方法(与调用的方法相同)当您直接从命令行运行 ffmpeg 时)。这可能不是完成您想要的事情的最佳方式。理想情况下,您将使用 ffmpeg API(如 libavcodec )进行编码/解码。

尽管如此,你的方法应该仍然有效,我怀疑你收到链接错误的原因是你没有在 ffmpeg 代码中链接。你能发布你正在运行的命令来构建 C 代码吗?确保您在源代码中包含 ffmpeg 源代码,或者在链接行中的某处有 -lffmpeg

关于android - FFmpeg:对 'main' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15389156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com