我面临以下问题如下: 背景: 我使用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模式下发生,并且在发布模式下正常工作。
答案 0 :(得分:0)
问题出在type_info
类中,这是实现的一部分。这个类在VS2010和VS2015中是不一样的。
您可以通过使用相同的编译器构建所有组件来解决它。