HarmonyOS OH_NativeXComponent_GetXComponentId函数编译找不到符号表,但是我头已经引用

#include "napi/native_api.h"
#include "hilog/log.h"
#undef LOG_TAG
#define LOG_TAG "QN_Media"
#include <string>
#include <cstdint>
#include <ace/xcomponent/native_interface_xcomponent.h>

  using namespace std;

unordered_map<std::string, OH_NativeXComponent *> nativeXComponentMap;

static void bindXComponent(napi_env env, napi_value exports){
  napi_value exportInstance = nullptr;
  if(napi_get_named_property(env, exports, OH_NATIVE_XCOMPONENT_OBJ, &exportInstance) != napi_ok){
    OH_LOG_INFO(LOG_APP, "xcomponment 获取失败");
    return;
  }
  OH_NativeXComponent* nativeXComponent = nullptr;
  if(napi_unwrap(env, exportInstance, (void **)&nativeXComponent) != napi_ok){
    OH_LOG_INFO(LOG_APP, "nativeXComponent 获取失败");
    return;
  }
  char idStr[OH_XCOMPONENT_ID_LEN_MAX+1] = {'\0'};
  uint64_t idSize = OH_XCOMPONENT_ID_LEN_MAX+1;
  if(OH_NativeXComponent_GetXComponentId(nativeXComponent, idStr, &idSize) != OH_NATIVEXCOMPONENT_RESULT_SUCCESS){
    OH_LOG_INFO(LOG_APP, "xcomponment 获取id失败");
    return;
  }
  string xComId(idStr);
  OH_LOG_INFO(LOG_APP, "xcomponment 获取id%{public}s", xComId.c_str());
}

EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{
  /*napi_property_descriptor desc[] = {
      { "add", nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr },
      { "initSDK", nullptr, initSDK, nullptr, nullptr, nullptr, napi_default, nullptr},
      { "unInitSDK", nullptr, unInitSDK, nullptr, nullptr, nullptr, napi_default, nullptr},
      { "connect", nullptr, connect, nullptr, nullptr, nullptr, napi_default, nullptr},
      { "disConnect", nullptr, disConnect, nullptr, nullptr, nullptr, napi_default, nullptr},
      { "disAllConnect", nullptr, disAllConnect, nullptr, nullptr, nullptr, napi_default, nullptr},
      { "startLive", nullptr, startLive, nullptr, nullptr, nullptr, napi_default, nullptr}
  };
  napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);*/
  bindXComponent(env, exports);
  OH_LOG_INFO(LOG_APP, "加载media的库");
  return exports;
}
EXTERN_C_END

static napi_module qnmediaModule = {
  .nm_version = 1,
  .nm_flags = 0,
  .nm_filename = nullptr,
  .nm_register_func = Init,
  .nm_modname = "qnmedia",
  .nm_priv = ((void*)0),
  .reserved = { 0 },
};

extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
{
  napi_module_register(&qnmediaModule);
}
HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

正确引用了头文件,可能是CmakeLists中未正确包含库文件导致。根据错误信息, 需要确保native_media_codecbase, native_media_core, native_media_vdec等库都被正确链接,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/_o_h___native_x_component-V5

分享
微博
QQ
微信
回复
3天前
相关问题
编译so时如何去除符号表
2927浏览 • 1回复 待解决
HarmonyOS 引用找不到方法
230浏览 • 1回复 待解决
HarmonyOS 找不到对应组件
245浏览 • 1回复 待解决
HarmonyOS 找不到崩溃日志问题
244浏览 • 1回复 待解决
HarmonyOS version-name找不到
385浏览 • 1回复 待解决
Harmony找不到HCI日志
2604浏览 • 1回复 待解决
HarmonyOS IDE hvigor缓存找不到
78浏览 • 1回复 待解决
HarmonyOS DevTools调试网页中找不到设备
513浏览 • 1回复 待解决
找不到图片和布局资源
12094浏览 • 8回复 待解决