gpt4 book ai didi

c# - nm:共享库符号出现两次或一次

转载 作者:行者123 更新时间:2023-11-30 15:00:39 26 4
gpt4 key购买 nike

我有一个共享库 (libARWrapper.so),其中包含以下两个条目,使用 nm (nm -D --define-only libARWrapper.so) 显示

00075854 T Java_org_artoolkit_ar_base_NativeInterface_arwAcceptVideoImage
00074d54 T Java_org_artoolkit_ar_base_NativeInterface_arwCapture
...
00072d54 T arwCapture

我知道T means “该符号位于文本(代码)部分。”

出现两次的arwCapture和只出现一次的arwAcceptVideoImage有什么区别。

我可以从 C# DllImport 调用 arwCapture,但不能调用 arwAcceptVideoImage
还有很多其他的函数和 arwCapture 一样,都在 org.artoolkit.ar.bash.NativeInterface 下,我可以使用它。
其他(Java)代码可以通过NDK调用所有函数。

最佳答案

nm 发布的输出中,没有证据表明您所说的内容(arwCapture() 没有出现两次)。其中之一是 JNI 函数,它肯定是一个在某个时刻调用 arwCapture() 的包装器。

大概 arwCapture() 是一个 c 函数,这就是为什么您可以从 C# 调用它,但在共享对象中,尽管有 arwAcceptVideoImage() ,但在任何地方都没有定义了一个 Java arwAcceptVideoImage() 方法。

如果此共享对象旨在作为 JNI 对象,则应避免从 Java 以外的其他语言调用它。相反,找到原始库并使用它。

关于c# - nm:共享库符号出现两次或一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41982796/

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