node-gyp解析windows build

时间:2016-04-13 06:23:54

标签: c++ node.js windows linker node-gyp

我尝试使用MS VS 2015在Windows 10上构建节点模块,由于某种原因,它无法解析node-gyp build上的库符号。这是我的binding.gyp文件:

{
    'variables' : {
        'include_path' : 'path/to/include',
        'lib_path': '/path/to/lib',
    },
    'targets': [
        {
            // name and sources here
            'include_dirs': [
                '<(include_path)',
            ],
            'libraries': [
                '<(lib_path)',
            ],
        },
    ],
}

由于某种原因,它无法解析库中的任何符号。以下是输出的片段:

ProjectBuild.obj : error LNK2001: unresolved external symbol __imp__AiMsgSetLogFileFlags [\path\to\build\project_build.vcxproj]
ProjectBuild.obj : error LNK2001: unresolved external symbol __imp__AiRenderInterrupt [\path\to\build\project_build.vcxproj]

此外,这里是对该库的目标文件转储中的那些符号的反汇编:

Disassembly of section .text:

0000000000000000 <AiMsgSetLogFileFlags>:
   0:   ff 25 00 00 00 00       jmpq   *0x0(%rip)        # 6 <AiMsgSetLogFileFlags+0x6>
   6:   90                      nop
   7:   90                      nop

ai.dll:     file format pei-x86-64

Disassembly of section .text:

0000000000000000 <AiRenderInterrupt>:
   0:   ff 25 00 00 00 00       jmpq   *0x0(%rip)        # 6 <AiRenderInterrupt+0x6>
   6:   90                      nop
   7:   90                      nop

ai.dll:     file format pei-x86-64

我可以100%确定node-gyp正在查找库文件。有谁知道为什么它在链接该文件中的符号时遇到问题?对于它的价值,我能够在linux环境中使用完全相同的binding.gyp文件构建模块。

1 个答案:

答案 0 :(得分:0)

您需要考虑确保要导出的符号具有此功能。 https://msdn.microsoft.com/en-us/library/3y1sfaz2%28v=vs.140%29.aspx