gpt4 book ai didi

c++ - 用于获取 .so 文件中定义内容的 nm 实用程序返回错误

转载 作者:行者123 更新时间:2023-11-28 06:50:56 29 4
gpt4 key购买 nike

我需要获取 .so 文件中定义的符号。我使用最新的 Mac 操作系统,我这样做:

 /usr/bin/nm  -gC libs/armeabi/libhello.so 

错误:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm:参数无效 -C用法:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm [-agnopruUmxjlfAP[s segname sectname] [-] [-t format] [[-arch ] ...] [文件...]

据我了解,这是另一个 nm 实用程序?它与 XCode 连接?如何解决这个问题?

编辑:添加创建 .so 文件的代码。

#include <android/log.h>
#include <stdio.h>
#include <jni.h>

jint NativeAddition(JNIEnv *pEnv, jobject pObj, jint pa, jint pb)
{
return pa+pb;
}

jint NativeMultiplication(JNIEnv *pEnv, jobject pObj, jint pa,
jint pb) {
return pa*pb;
}

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* pVm, void* reserved)
{
JNIEnv* env;
if ((*pVm)->GetEnv(pVm, (void **)&env, JNI_VERSION_1_6)) {
return -1; }
JNINativeMethod nm[2];
nm[0].name = "NativeAddition";
nm[0].signature = "(II)I";
nm[0].fnPtr = NativeAddition;
nm[1].name = "NativeMultiplication";
nm[1].signature = "(II)I";
nm[1].fnPtr = NativeMultiplication;
jclass cls = (*env)->FindClass(env, "com/example/hellondk/HelloNDKActivity");
// Register methods with env->RegisterNatives.
(*env)->RegisterNatives(env, cls, nm, 2);
return JNI_VERSION_1_6;
}

此示例来自 Android Native Development Kit Cookbook。

还有我的nm

的用法信息

Usage: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm [-agnopruUmxjlfAP[s segname sectname] [-] [-t format] [[-arch ] ...] [file ...]

最佳答案

在 OS X 中,没有用于 demangling 符号的 -C 选项。

# nm libs/armeabi/libhello.so | c++filt -p -i

你可以改为 use c++filt as a wrapper或如上所示调用它。

关于c++ - 用于获取 .so 文件中定义内容的 nm 实用程序返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23975743/

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