- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 Android NDK 构建一个共享库,它引用 libjingle_peerconnection.so 从 webrtc-58 为 Android 构建,但出现链接器错误:
MyProject\Libs\webrtc-58\include\webrtc\api\datachannelinterface.h:64: error: undefined reference to 'rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()'
MyProject\Libs\webrtc-58\include\webrtc\base\copyonwritebuffer.h:48: error: undefined reference to 'rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int, unsigned int)'
我在 Ubuntu 和 Windows 上构建项目的输出相同。在 Ubuntu 上构建时,我将 QT Creator 配置为使用来自 webrtc 构建工具的 Android SDK/NDK(用于构建 libjingle_peerconnection
Qt5.9.2 上的 QT Creator 4.4.1 webrtc-58 使用以下配置在 Ubuntu 上构建
gn gen out/Debug/arm-v7 --args='target_os="android" is_component_build=false rtc_include_tests=false target_cpu="arm"'
我转储了未剥离的 libjingle_peerconnection.so 并注意到其中包含 CopyOnWriteBuffer 类实现:
001b2bbd t void rtc::CopyOnWriteBuffer::AppendData<unsigned char, (void*)0>(unsigned char const*, unsigned int)
000ee055 t rtc::CopyOnWriteBuffer::EnsureCapacity(unsigned int)
000edf51 t rtc::CopyOnWriteBuffer::CloneDataIfReferenced(unsigned int)
000fafd9 t char* rtc::CopyOnWriteBuffer::data<char, (void*)0>()
000fae61 t unsigned char* rtc::CopyOnWriteBuffer::data<unsigned char, (void*)0>()
000eddcd t rtc::CopyOnWriteBuffer::Clear()
00092cd1 t void rtc::CopyOnWriteBuffer::SetData<char, (void*)0>(char const*, unsigned int)
00092cd1 t void rtc::CopyOnWriteBuffer::SetData<unsigned char, (void*)0>(unsigned char const*, unsigned int)
000edb4d t rtc::CopyOnWriteBuffer::SetSize(unsigned int)
000fad19 t rtc::CopyOnWriteBuffer::operator=(rtc::CopyOnWriteBuffer&&)
000ed6f1 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int)
000ed7d9 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int, unsigned int)
000ed6e1 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer&&)
0003462f t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer const&)
0002f1f7 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer()
000faa35 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer<char, (void*)0>(char const*, unsigned int)
000ed6f1 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int)
000ed7d9 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(unsigned int, unsigned int)
000ed6e1 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer&&)
0003462f t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer(rtc::CopyOnWriteBuffer const&)
0002f1f7 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer()
000faa35 t rtc::CopyOnWriteBuffer::CopyOnWriteBuffer<char, (void*)0>(char const*, unsigned int)
0003452d t rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()
0003452d t rtc::CopyOnWriteBuffer::~CopyOnWriteBuffer()
MYPROJECT_Core.Pro 的内容
QT += core xml
QT -= gui
TARGET = MYPROJECT_Core
TEMPLATE = lib
DEFINES += MYPROJECT_CORE_LIBRARY
DEFINES += QT_DEPRECATED_WARNINGS
DEFINES += NOMINMAX
DEFINES += ENABLE_RTC_EVENT_LOG
QMAKE_CFLAGS_WARN_ON -= -Wall
QMAKE_CXXFLAGS_WARN_ON -= -Wall
CONFIG += warn_off
android {
CONFIG += c++11
QMAKE_CXXFLAGS += -std=c++11
DEFINES += NDEBUG=1
DEFINES += WEBRTC_POSIX
DEFINES += WEBRTC_ANDROID
LIBS += -L$$PWD/../Libs/webrtc-58/lib/android/armeabi-v7a/jni/armeabi-v7a -ljingle_peerconnection_so
INCLUDEPATH += $$PWD/../Libs/webrtc-58/include
DEPENDPATH += $$PWD/../Libs/webrtc-58/include
}
SOURCES += \
main.cpp \
最佳答案
我的同事今天解决了这个问题。他用 webrtc 构建输出中的另一个库替换了 libjingle_peerconnection.so
obj/webrtc/api/libjingle_peerconnection_api.a
ob/webrtc/base/librtc_base_approved.a
QT Android Kit 和 webrtc 构建系统也存在兼容性问题,因此 Android Kit 使用 gnuSTL 构建,而 webrtc 使用 libc++ 构建,因此他从 Android NDK 包中包含了 libc++_shared.so。整个 Pro 文件将如下所示
QT -= gui
TARGET = WebRtcDependantLib
TEMPLATE = lib
#CONFIG += c++11
QMAKE_CXXFLAGS += -fno-rtti -fno-exceptions
DEFINES += MY_TEST_LIBRARY
android {
DEFINES += WEBRTC_POSIX
DEFINES += WEBRTC_ANDROID
DEFINES += NDEBUG
WEBRTC = /home/user/Dev/src #WEBRTC-M58 sources directory
WEBRTCBUILD = $$WEBRTC/out/Debug/arm-v7/obj
#android NDK bundled by webrtc build system
WEBRTCNDK = $$WEBRTC/third_party/android_tools/ndk
LIBS += -Wl,--start-group
LIBS += $$WEBRTCBUILD/webrtc/api/libjingle_peerconnection_api.a
LIBS += $$WEBRTCBUILD/webrtc/base/librtc_base_approved.a
LIBS += -Wl,--end-group
LIBS += $$WEBRTCNDK/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++_shared.so
INCLUDEPATH += $$WEBRTC
DEPENDPATH += $$WEBRTC
}
SOURCES += \
main.cpp
关于android - 在 Android NDK 项目中使用 webrtc-58 - 使用 QT 构建时为 "Undefined reference to CopyOnWriteBuffer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47264103/
嘿伙计们,我对java很陌生,我想知道是否有人可以解释为什么我在数组的开头得到一个随机空值,它是[null,r,b,o,e,r, t] 不知道为什么这样做!任何摆脱它的帮助都会很棒! public s
当我执行程序时 #include #include #include double exponential(double u); double exponential(double u) {
这个问题已经有答案了: 奥 git _a (17 个回答) 已关闭 7 年前。 我已经从 What does "Fatal error: Unexpectedly found nil while un
我正在开发一个债务跟踪应用程序,并且需要一个进度条,当当前债务下降时,进度会上升。我能想到的唯一方法是捏造周围的数字,使进度条 MAX 设置为 0,然后将起始债务更改为负数,如下所示 Progress
我知道当使用 ARC 并且你有一个 NSString 属性时,你可以像使用 MRC 一样执行 @property(nonatomic, copy)。但我想知道,在我将我的项目转换为 ARC 之后,我的
在 Xcode 6 Beta 2 上,我构建了一个带有 2 个 View Controller 的应用程序。 可以看到“Button”的 Action 是打开第二个ViewController。 但是
我正在使用 CreateFileA,我第一次调用它时,它按预期工作。但是当我第二次调用它时,它返回句柄 INVALID_HANDLE_VALUE。可能是什么问题呢?仅供引用,每次我需要检查我的 USB
我有一个被映射到生成器中的增强函数;然而,出于某种原因,tfa.image.rotate函数导致错误。 def customGenerator(input_file_paths, dims, data
我有查询并且有效 select *, id, from_unixtime(start_timestamp) from log limit 1; 这也很好用: select * from log lim
我有一个 FutureBuilder在我的具有常规结构的应用程序中: FutureBuilder( future: futureData(), builder: (context, snaps
所以我最近才接触到C++的SDL2,我做了这个非常简单的代码: int main(int argc, char** argv) { SDL_Event *event; bool done = fals
我正在打包一个非常简单的 redmine 插件 rpm,以供内部使用,但我遇到了“Package has no %description:”错误。 .spec 有一个描述,但我在 inet 上找不到任
call main() sub main() Dim scmd Set scmd = "c:\windows\system32\cscript.exe //nologo c:\s.vb
我正在使用以下代码在 Java 应用程序中使用 Git。我有一个有效的 key (一直使用它),并且这个特定的代码之前使用相同的 key 和 git 存储库对我有用,但现在我得到以下异常: inval
我有一个 Java 小程序,可以查询 Oracle 数据库中的数据。当从 IDE 内部运行时,它运行得很好。但是,当我将它作为嵌入网页中的小程序运行时,我在类加载器中收到“访问被拒绝”错误,并且我根本
我正在将一个 HTML 文件从 MainBundle 加载到 UIWebview 中,并想传入一个查询字符串,因为 HTML 文件检查 GET 参数 (?device=1) 以进行一些额外的计算。我还
我有一个包含多个项目的解决方案。每个项目都有自己的 nuspec 文件,其中一些项目相互引用 当我通过调用创建一个新包时 nuget pack MyLibrary.csproj -IncludeRef
我有一个测试文件和一个主模块文件,其中有一个我正在测试的函数。在测试文件的末尾,我有 unittest.main() 来运行单元测试。但是,当我运行测试文件时,控制台显示“未找到测试”,即使我的文件中
我在构建 docker 镜像时使用 dotnet:2.1-sdk 作为包。RUN dotnet restore 命令失败并出现以下错误: **error : Unable to load the se
这是一个简单的程序,只会执行 3 个子进程。每个都将创建一个锁,读取一个文本文件,并取消该锁的链接。如果正确执行,子进程将退出,并将其进程 ID 转换为 8 位。如果无法创建/取消链接锁,程序将尝试
我是一名优秀的程序员,十分优秀!