HarmonyOS鸿蒙Next中cpp编译后代码都不更新
HarmonyOS鸿蒙Next中cpp编译后代码都不更新 我在测试cpp代码的时候出现问题。
但我使用默认提供的.add函数是正常的。
所以我就想试试把底层的a+b改成 a-b 但是得出的答案一样是12。
清理项目重新构建也是不可以,给位大佬帮我看看是哪里出问题了。
修改部分全都放上来了,其他的就和默认的一模一样。
6 回复
要在napi_init.cpp
中分别实现sub
和cheng
函数:
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立即生效,
从图片和描述来看,这个问题可能是由以下几个原因导致的:
- 编译缓存问题:虽然清理了项目,但可能仍有缓存残留。建议尝试以下操作:
- 删除项目目录下的
build
文件夹 - 执行Clean Project后再Rebuild
- 重启DevEco Studio
- NDK编译配置问题:
- 检查
cpp
目录下的CMakeLists.txt
是否正确配置 - 确认修改后的
cpp
文件是否被正确包含在编译列表中
- 动态库加载问题:
- 检查生成的
.so
文件是否更新(查看修改时间) - 确认应用加载的是新生成的
.so
文件而非旧版本
建议先重点检查.so
文件的生成时间和位置,确保修改后的代码确实被编译进了最终产物中。如果问题依旧,可以提供更详细的编译日志信息以便进一步分析。