2017-06-14 18 views
0

私は次の問題に直面しています: 背景: 静的ライブラリlibXYZload.lib )を使用してVS2010。テストアプリケーション(testapp.exe)をVS2015でビルド(リンク)しているときに、同じライブラリ(libXYZload.lib)がDEBUGモードで使用されています。VS2010で構築された静的ライブラリ(.lib)が、デバッグモードでVS2015を使用して構築されているアプリケーションにリンクできません。

問題の内容: VS2010で構築された静的ライブラリ(libXYZload.lib)をリンクして、VS2010とVS2012を使用してアプリケーション 'testapp.exe'をビルドすることができました。

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) : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification

libXYZload.lib(TestlmCICO.obj) : error LNK2019: unresolved external symbol "public: char const * __thiscall type_info::name(struct __type_info_node *)const " ([email protected][email protected]@[email protected]@@Z) referenced in function _Security_Testing libXYZload.lib(TestPublicInterface.obj) :

error LNK2001: unresolved external symbol "public: char const * __thiscall type_info::name(struct __type_info_node *)const " ([email protected][email protected]@[email protected]@@Z) testapp.exe : fatal

error LNK1120: 1 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\LINK.EXE"' : return code '0x460' Stop.

私はそれがVS2010で正常にビルドとVS2012は、誰かが取得するための理由を説明していただけますよう、ライブラリから欠落しているシンボルを識別することはできませんよ。しかし、VS2015で、私は次のエラーを取得します上記のエラー?それを解決する方法は?

注:この問題はDEBUGモードでのみ発生し、リリースモードで正常に動作します。

答えて

0

問題は、実装の一部であるtype_infoクラスにあります。このクラスは、VS2010とVS2015では同じではありません。

すべてのコンポーネントを同じコンパイラでビルドして解決します。

+0

お返事ありがとうございます。 'type_info'クラスの問題であれば、リリースビルドでもビルドに失敗するはずです。しかし、DEBUGモードビルドでのみ失敗しています。 – vinayBLR080

+0

私はあなたがそれを推測している理由を知らない。通常、リリースビルドでは '/ OPT:ICF'が使用されており、欠落している機能に関するいくつかの問題を隠しています。 – MSalters

関連する問題