最近在写一个node.js的扩展项目,发现了一个问题,我本来吧c代码在windows下做成一个静态库lib文件,可是在node.js扩展中调用其中的lib文件中的函数死活不能编译成功,报error LNK2001: 无法解析的外部符号。但是如果我不是用调用静态库的方式,直接把代码放入到node.js的扩展项目中一起编译竟能编译成功。我试了各种方法,死活找不到解决方法。
我出错时的gpy配置文件:
{
"targets": [
{
"target_name": "shmdb",
"include_dirs": [
"include", "./include"
],
'libraries': [
'../lib/cshmdb.lib'
],
"sources": [ "addon.cc","ShmdbObject.cc" ]
}
]
}
编译出错时的日志:
正在创建库 D:\temp\addone\cpp2node\build\Release\shmdb.lib 和对象 D:\temp\addone\cpp2node\build\Release\shmdb.exp
ShmdbObject.obj : error LNK2001: 无法解析的外部符号 shmdb_initParent [D:\temp\addone\cpp2node\build\shmdb.vcxproj]
D:\temp\addone\cpp2node\build\Release\shmdb.node : fatal error LNK1120: 1 个无法解析的外部命令 [D:\temp\addone\cpp2node\build\shmdb.vcxproj]
gyp ERR! build error
gyp ERR! stack Error: `msbuild` failed with exit code: 1
gyp ERR! stack at ChildProcess.onExit (C:\Users\sunny\AppData\Roaming\npm\no
de_modules\node-gyp\lib\build.js:267:23)
我的目录结构:
![screenshot](https://oss-cn-hangzhou.aliyuncs.com/yqfiles/2531298a6dc048975c9925b6cea2a8d47642ae45.png)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。