HarmonyOS鸿蒙Next中cpp编译后代码都不更新

HarmonyOS鸿蒙Next中cpp编译后代码都不更新 我在测试cpp代码的时候出现问题。

但我使用默认提供的.add函数是正常的。

所以我就想试试把底层的a+b改成 a-b 但是得出的答案一样是12。

清理项目重新构建也是不可以,给位大佬帮我看看是哪里出问题了。

修改部分全都放上来了,其他的就和默认的一模一样。

6 回复

我在debug运行的时候查看testNapi中只有add一个方法自己写的sub并未被加入

cke_956.png

cke_1670.png

更多关于HarmonyOS鸿蒙Next中cpp编译后代码都不更新的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


要在napi_init.cpp中分别实现subcheng函数:

static napi_value Sub(napi_env env, napi_callback_info info) {
    size_t argc = 2;
    napi_value args[2] = {nullptr};

    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

    napi_valuetype valuetype0;
    napi_typeof(env, args[0], &valuetype0);

    napi_valuetype valuetype1;
    napi_typeof(env, args[1], &valuetype1);

    double value0;
    napi_get_value_double(env, args[0], &value0);

    double value1;
    napi_get_value_double(env, args[1], &value1);

    napi_value difference;
    napi_create_double(env, value0 - value1, &difference);

    return difference;
}

static napi_value Cheng(napi_env env, napi_callback_info info) {
    size_t argc = 2;
    napi_value args[2] = {nullptr};

    napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);

    napi_valuetype valuetype0;
    napi_typeof(env, args[0], &valuetype0);

    napi_valuetype valuetype1;
    napi_typeof(env, args[1], &valuetype1);

    double value0;
    napi_get_value_double(env, args[0], &value0);

    double value1;
    napi_get_value_double(env, args[1], &value1);

    napi_value product;
    napi_create_double(env, value0 * value1, &product);

    return product;
}

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},
        {"sub", nullptr, Sub, nullptr, nullptr, nullptr, napi_default, nullptr},
        {"cheng", nullptr, Cheng, nullptr, nullptr, nullptr, napi_default, nullptr}};
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
    return exports;
}
EXTERN_C_END

差别之处:

Add:

napi_value sum;
napi_create_double(env, value0 + value1, &sum);

return sum;

Sub:

napi_value difference;
napi_create_double(env, value0 - value1, &difference);

return difference;

Cheng:

napi_value product;
napi_create_double(env, value0 * value1, &product);

return product;

你好是我的表述有问题,我在debug运行的时候查看testNapi中只有add一个方法 而自己写的sub并未被加入,

我这里没有类似这个问题,更新C代码,debug立即生效,

在HarmonyOS鸿蒙Next中,若cpp编译后代码未更新,请检查以下方面:

  1. 确认编译链配置正确,使用最新版HUAWEI DevEco Studio
  2. 清理构建缓存(Build > Clean Project)
  3. 检查GN或BUILD.gn脚本中的依赖声明
  4. 验证文件时间戳是否更新
  5. 确保未启用增量编译配置错误
  6. 检查模块级build-profile.json5的配置

若问题持续,可尝试删除out目录后重新构建。

从图片和描述来看,这个问题可能是由以下几个原因导致的:

  1. 编译缓存问题:虽然清理了项目,但可能仍有缓存残留。建议尝试以下操作:
  • 删除项目目录下的build文件夹
  • 执行Clean Project后再Rebuild
  • 重启DevEco Studio
  1. NDK编译配置问题:
  • 检查cpp目录下的CMakeLists.txt是否正确配置
  • 确认修改后的cpp文件是否被正确包含在编译列表中
  1. 动态库加载问题:
  • 检查生成的.so文件是否更新(查看修改时间)
  • 确认应用加载的是新生成的.so文件而非旧版本

建议先重点检查.so文件的生成时间和位置,确保修改后的代码确实被编译进了最终产物中。如果问题依旧,可以提供更详细的编译日志信息以便进一步分析。

回到顶部