首页 > node c++扩展引用引用静态库中函数提示 error LNK2001: 无法解析的外部符号 问题

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


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

【热门文章】
【热门文章】