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.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)

我的目录结构:
目录结构

最后需要说明的是,我拿cshmdb.lib在vs2012下写了一个简单的测试程序,是能够调用里面的函数的啊。我大概猜到是我的gpy没有配置对,但是不知道如何解决,求大家给个解决问题的思路啊。

回答:

看问题是链接的时候没有链接那个lib文件

没用过gpy,一般用vs写c++程序的解决办法是直接在cpp里面写#pragma comment(lib,"xxx.lib")

回答:

楼主,这个问题解决了吗?我也遇到了这样的问题

以上是 node c++扩展引用引用静态库中函数提示 error LNK2001: 无法解析的外部符号 问题 的全部内容, 来源链接: utcz.com/p/191071.html

回到顶部