node c++扩展引用引用静态库中函数提示 error LNK2001: 无法解析的外部符号 问题
最近在写一个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.expShmdbObject.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)
我的目录结构:
最后需要说明的是,我拿cshmdb.lib在vs2012下写了一个简单的测试程序,是能够调用里面的函数的啊。我大概猜到是我的gpy没有配置对,但是不知道如何解决,求大家给个解决问题的思路啊。
回答:
看问题是链接的时候没有链接那个lib文件
没用过gpy,一般用vs写c++程序的解决办法是直接在cpp里面写#pragma comment(lib,"xxx.lib")
回答:
楼主,这个问题解决了吗?我也遇到了这样的问题
以上是 node c++扩展引用引用静态库中函数提示 error LNK2001: 无法解析的外部符号 问题 的全部内容, 来源链接: utcz.com/p/191071.html