我尝试使用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文件构建模块。
答案 0 :(得分:0)
您需要考虑确保要导出的符号具有此功能。 https://msdn.microsoft.com/en-us/library/3y1sfaz2%28v=vs.140%29.aspx