使用VS2010构建的静态库(.lib)无法链接到在DEBUG模式下使用VS2015构建的应用程序

时间:2017-06-14 07:50:28

标签: visual-studio-2015

我面临以下问题如下: 背景: 我使用VS2010构建了一个静态库(libXYZload.lib)。在DEBUG模式下使用VS2015构建(链接)测试应用程序(testapp.exe)时,正在使用相同的库(libXYZload.lib)。

问题描述: 通过链接使用VS2010构建的静态库(libXYZload.lib),我可以使用VS2010和VS2012构建我的应用程序'testapp.exe'。但是使用VS2015,我收到以下错误:

LINK /nologo /NODEFAULTLIB /OPT:NOREF /NXCOMPAT /DynamicBase  /SAFESEH /out:testapp.exe testapp.obj ml_new.obj ml_trl.lib libsb.lib libcrvs.lib libcat.lib libXYZload.lib libXYZload.lib libredir_std.lib libredir_std.lib legacy_stdio_wide_specifiers.lib legacy_stdio_definitions.lib libvcruntime.lib libucrt.lib oldnames.lib kernel32.lib user32.lib netapi32.lib  gdi32.lib comdlg32.lib  comctl32.lib wsock32.lib shell32.lib  Rpcrt4.lib oleaut32.lib Ole32.lib Wbemuuid.lib wintrust.lib crypt32.lib Ws2_32.lib iphlpapi.lib Psapi.lib advapi32.lib Shlwapi.lib dhcpcsvc.lib userenv.lib tbs.lib libcmt.lib test_dongle_stub.lib
  

test_dongle_stub.lib(m_xyzstub.obj):警告LNK4075:忽略   '/ EDITANDCONTINUE'由于'/ OPT:LBR'规范

     

libXYZload.lib(TestlmCICO.obj):错误LNK2019:未解析的外部   符号“public:char const * __thiscall type_info :: name(struct   __type_info_node *)const“(?name @ type_info @@ QBEPBDPAU__type_info_node @@@ Z)在   function _Security_Testing libXYZload.lib(TestPublicInterface.obj):

     

错误LNK2001:未解析的外部符号“public:char const *   __thiscall type_info :: name(struct __type_info_node *)const“(?name @ type_info @@ QBEPBDPAU__type_info_node @@@ Z)testapp.exe:fatal

     

错误LNK1120:1个未解析的外部NMAKE:致命错误U1077:   '“C:\ Program Files(x86)\ Microsoft Visual Studio   14.0 \ VC \ BIN \ LINK.EXE“':返回代码'0x460'停止。

我无法确定库中缺少哪个符号,因为它在VS2010和VS2012上成功构建可以有人请解释导致上述错误的原因吗?以及如何解决它?

注意:此问题仅在DEBUG模式下发生,并且在发布模式下正常工作。

1 个答案:

答案 0 :(得分:0)

问题出在type_info类中,这是实现的一部分。这个类在VS2010和VS2015中是不一样的。

您可以通过使用相同的编译器构建所有组件来解决它。