簡體   English   中英

clang++:錯誤:linker 命令在帶有 ffmpeg 的 cpp 中失敗,退出代碼為 1(使用 -v 查看調用)

[英]clang++: error: linker command failed with exit code 1 (use -v to see invocation) in cpp with ffmpeg

clang++: error: linker command failed with exit code 1 (use -v to see invocation)

我看到了這個鏈接鏈接2 但是,它沒有完成。

我的 jni 文件夾:

在此處輸入圖像描述

Android.mk 文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES += ./include
LOCAL_MODULE     := native-lib
LOCAL_CFLAGS := -DSTDC_HEADERS -std=c99
LOCAL_CFLAGS := -Wno-pointer-sign
LOCAL_ARM_MODE := arm
APP_OPTIM := release
LOCAL_SRC_FILES  := \
./native-lib.cpp
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)

本機 lib.cpp 文件

#include <jni.h>
#include <string>

extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/opt.h"
}

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_m_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
av_register_all();
return env->NewStringUTF(hello.c_str());
}

當我構建 ndk 時,會發生此錯誤。

D:\Github\n>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
[arm64-v8a] Compile++      : native-lib <= native-lib.cpp
[arm64-v8a] SharedLibrary  : libnative-lib.so
./obj/local/arm64-v8a/objs/native-lib/./libmp3lame/native-lib.o: In function `Java_com_example_m_MainActivity_stringFromJNI':
D:\Github\n/jni/./libmp3lame/native-lib.cpp:16: undefined reference to `av_register_all'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [D:/install/sdk/ndk/21.0.6113669/build//../build/core/build-binary.mk:725: obj/local/arm64-v8a/libnative-lib.so] Error 1

D:\Github\n>ndk-build -v
GNU Make 4.2.1
Built for x86_64-w64-mingw32
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

D:\Github\n>

為什么它像這樣native-lib.cpp:16: undefined reference av_register_all

我在我的 jni 文件夾中添加了所有必需的庫,但是為什么會出現這個錯誤和這個native-lib.cpp:16: undefined reference av_register_all呢? 我該如何解決這個問題?

我在我的 jni 文件夾中添加了所有必需的庫,但是為什么會出現這個錯誤和這個 native-lib.cpp:16: undefined reference av_register_all 呢?

僅僅將庫放到你的項目中是不夠的。 Android.mk 中沒有任何鏈接指令。 因此,即使您的庫在那里,當您的 native-lib 被編譯時,它也不會被鏈接。 因此,您未定義的引用...

我建議你看看這篇文章,重點關注那些LOCAL_C_INCLUDESLOCAL_LDLIBS變量。 你必須在你的項目中做類似的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM