最近,我需要为我所工作的一个本机节点模块引入Boost图形库,同时还需要使用boost序列化。有一个独立的VS项目,我为这个模块进行了所有的开发和测试。当从VS项目运行时,项目编译、链接和按预期工作。
当我试图将静态序列化库与我的模块链接时,我遇到了问题,当我用node构建时。我已经在binding.gyp文件的库部分中包含了序列化库的完整路径。在从node编译的文件生成的对象文件中,下面的行导致链接器失败:
/FAILIFMISMATCH:"_CRT_STDIO_ISO_WIDE_SPECIFIERS=0"^@^Dlibboost_serialization-vc140-mt-s-x64-1_67.lib^@^Dlibboost_serialization-vc140-mt-s-x64-1_67.lib^@^Duuid.lib^@^Duuid.lib^@
对象文件期待libboost_serialization-vc140-mt-s-x64-1_67.lib.当构建过程试图链接文件时,链接器将发出一个错误:
链接:致命错误LNK1104:无法打开文件LNK1104
但是,boost构建的libboost_serialization-vc141-mt-s-x64-1_67.lib与对象文件期望的版本不同。我已经尝试构建了对象文件正在寻找的版本,但我似乎无法这样做(每次尝试,它都会跳过所有的目标,即使我指定了另一个工具集)。
如何更改对象文件所期望的库版本?
发布于 2018-07-11 14:18:23
当我试图构建序列化库的“正确”版本时,我一直在使用toolset=msvc-140
。应该是toolset=msvc-14.0
。有时候我很傻。
https://stackoverflow.com/questions/51290613
复制