Как убедиться, что вы строите против STLport - PullRequest
1 голос
/ 05 мая 2010

Я использую 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.

спасибо

...