我有问题。我从当地政府那里获得了一个C对象文件( src / knr12 / knr12.o ),该文件需要使用,因此我的软件已通过他们的认证。
因为我正在开发Web应用程序,所以我想将Node.js的N-API用于本机插件。经过几个小时的编码,我的代码得以编译,但是当我从 index.js 调用包装函数时,却遇到了运行时错误:
dyld:懒惰的符号绑定失败:找不到符号:_knr12_vers
这是我的代码:
main.c
napi_value knr12(napi_env env,napi_callback_info info) {
...
char* zid = (char *)malloc(sizeof(char) * (len+1));
...
// Contains the result of the getKnr12 function
char* result = malloc(150);
// -> The error is thrown in this function call
getKnr12(zid,result);
...
}
knr12.c
int knr12_vers(void);
...
void getKnr12(char* zid,char* result)
{
printf("%s",knr12_vers());
return;
}
这是我的 binding.gyp 文件:
{
"targets": [{
"target_name": "addons","sources": [
"src/main.c","src/knr12/knr12.c"
]
}]
}
在我删除 knr12.c 中的knr12_vers
调用并进行重建后,一切正常,除了我没有想要的输出。
我认为所需目标文件的链接存在问题,但我不知道如何解决。
我做了很多尝试,将对象文件添加到 binding.gyp 源,库,link_settings中,但是没有任何效果。
我搜索了几个小时,但没有找到解决该问题的方法。