Я использую Visual C ++ 2005 для создания пары библиотек и исполняемого файла.
Я включаю расположение STLport в поле «Дополнительные пути включения» библиотек и включаю библиотеку во входные данные компоновщика для исполняемого файла.
Библиотека, похоже, использует символы stl (например, строку) без пространства имен порта stl.
Это приводит к ошибке компоновщика.
это соответствующие строки из командной строки в 2 библиотеках и исполняемый файл:
/Od /I "..\Junctions\fo_fid_3rdParty\STLport-5.1.0\stlport"
/Od /I "..\Junctions\Includes\fo_fid_3rdParty\STLport-5.1.0\stlport"
/OUT:"..\ET_BUILD\vc8\Debug\bin\SFGWDealerwebFixAutorecD.exe" /INCREMENTAL:NO /NOLOGO
..\junctions\libs\fo_fid_3rdParty\STLport-5.1.0\lib\stlportstld_vc8.5.1.lib
Вот пример ошибки.
Ошибка 7 ошибка LNK2001: неразрешенный внешний символ "public: virtual bool __thiscall Springfield :: CClientFramework :: ProviderRequest (класс std :: basic_string, класс std :: allocator> const &, класс std :: basic_string, класс std :: allocator> const &, класс std :: basic_string, класс std :: allocator> const &) "(? ProviderRequest @ CClientFramework @ Springfield @@ UAE_NABV? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ allocator @ D @ 2 @@ std @@ 00 @ Z) FixAutorec.lib
Этот символ Springfield :: CClientFramework :: ProviderRequest происходит из библиотеки ClientArchitecture.lib
Вот как dumpbin.exe отображает этот символ:
(открытый: виртуальный bool *))
Обратите внимание, что искомый символ определяет его строки std :: basic_string.
Принимая во внимание, что пункт назначения определяет символы как stlpd_std :: basic_string.
спасибо