Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» STLport

Автор: MarfaKudesnica
Дата сообщения: 06.10.2005 22:24
Кто-нибудь подключал сабж к VC 6.0 ? Помогите!
Скомпилировал, пути для инклюдов и либов прописал в VC, а он не хочет линковать:

#include "stdafx.h"
#include <cstdio>
#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
printf("sdsdsd");
std::cout<<"DDDDDDDDD"<<std::endl;

std::string s;
std::cin>>s;
return 0;
}

компилируется, но при линковке выдает:

Deleting intermediate files and output files for project '_test2 — Win32 Debug'.
--------------------Configuration: _test2 — Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
_test2.cpp
Linking...
_test2.obj : error LNK2001: unresolved external symbol "class stlpmtx_std::basic_istream<char,class stlpmtx_std::char_traits<char> > stlpmtx_std::cin" (?cin@stlpmtx_std@@3V?$basic_istream@DV?$char_traits@D@stlpmtx_std@@@1@A)
_test2.obj : error LNK2001: unresolved external symbol "class stlpmtx_std::basic_ostream<char,class stlpmtx_std::char_traits<char> > stlpmtx_std::cout" (?cout@stlpmtx_std@@3V?$basic_ostream@DV?$char_traits@D@stlpmtx_std@@@1@A)
_test2.obj : error LNK2001: unresolved external symbol "private: static void __cdecl stlpmtx_std::D__A<0,0>::_M_deallocate(void *,unsigned int)" (?_M_deallocate@?$D__A@$0A@$0A@@stlpmtx_std@@CAXPAXI@Z)
_test2.obj : error LNK2001: unresolved external symbol "public: __thiscall stlpmtx_std::locale::~locale(void)" (??1locale@stlpmtx_std@@QAE@XZ)
_test2.obj : error LNK2001: unresolved external symbol "public: __thiscall stlpmtx_std::locale::locale(class locale::locale const &)" (??0locale@stlpmtx_std@@QAE@ABV01@@Z)
_test2.obj : error LNK2001: unresolved external symbol "protected: void __thiscall stlpmtx_std::ios_base::_M_throw_failure(void)" (?_M_throw_failure@ios_base@stlpmtx_std@@IAEXXZ)
_test2.obj : error LNK2001: unresolved external symbol "private: static void * __cdecl stlpmtx_std::D__A<0,0>::_M_allocate(unsigned int)" (?_M_allocate@?$D__A@$0A@$0A@@stlpmtx_std@@CAPAXI@Z)
_test2.obj : error LNK2001: unresolved external symbol "void __cdecl stlpmtx_std::__stl_throw_length_error(char const *)" (?__stl_throw_length_error@stlpmtx_std@@YAXPBD@Z)
_test2.obj : error LNK2001: unresolved external symbol "public: class stlpmtx_std::locale::facet * __thiscall stlpmtx_std::locale::_M_use_facet(class stlpmtx_std::locale::id const &)const " (?_M_use_facet@locale@stlpmtx_std@@QBEPAVfacet@12@ABVid@12@
@Z)
_test2.obj : error LNK2001: unresolved external symbol "public: static class stlpmtx_std::locale::id stlpmtx_std::ctype<char>::id" (?id@?$ctype@D@stlpmtx_std@@2V0locale@2@A)
_test2.obj : error LNK2001: unresolved external symbol "public: char const * __thiscall stlpmtx_std::ctype<char>::scan_not(enum stlpmtx_std::ctype_base::mask,char const *,char const *)const " (?scan_not@?$ctype@D@stlpmtx_std@@QBEPBDW4mask@ctype_base
@2@PBD1@Z)
Debug/_test2.exe : fatal error LNK1120: 11 unresolved externals
Error executing link.exe.
Creating browse info file...

_test2.exe — 12 error(s), 0 warning(s)

Уже целый день парюсь. В мане ничего толком не нашел. Установку проводил как в мане написано. В инете тоже тема не раскрыта. У всех всё нормально, а у меня такой странный глюк!
Автор: verhovetc
Дата сообщения: 07.10.2005 09:48
Посмотри на сайте OGRE (game-движок), там используется STLPort и есть статья по его поключению к VC6.0
Автор: MarfaKudesnica
Дата сообщения: 07.10.2005 12:40
Установка STLport 5.0 RC5 на Visual C++ 6.0

Библиотека STLport поставляется в виде исходных текстов, без бинарников. Для подключения ее к нужному компилятору, необходимо сначала скомпилировать всю библиотеку.

Требования.
STLport 5.0:
Берется с http://sourceforge.net/projects/stlport

VC6.0:
Требуется что бы был установлен Visual Studio 6.0 Service Pack 5. Сервис-пак обязателен!
Можно найти на сайте Микрософт.
http://www.microsoft.com/downloads/details.aspx?FamilyID=e41b1d62-f3cb-4867-b86a-a2fe4932cf70&DisplayLang=en

Установка.

1. Установите Visual Studio 6.0 Service Pack 5 (если его не было). Далее предполагается, что Visual Studio установлен в "c:\PROG\Microsoft Visual Studio"
2. Распакуйте архив с STLport, например, в c:\PROG\STLport\.
3. Запустите командную строку (cmd.exe).
4. Необходимые каталоги из VS должны быть прописаны в PATH. Этого легко добится, запустив "c:\PROG\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT" в открытой консоли. Переменная PATH изменится только на текущий сеанс работы командной строки (у меня так было), по-этому все следующие операции проводятся в ней же!
5. Перейти в каталог c:\PROG\STLport\build\lib .
6. Скомпилировать командой nmake –f nmake-vc6.mak install .
7. После можно (не обязательно) скомпилировать тесты. Для этого из каталога c:\PROG\STLport\build\test\unit запустить nmake –f nmake-vc6.mak install .
8. Теперь настроить VC для работы с STLport. Tools -> Options -> Directories .
Include Files: ввести путь к заголовкам STLport (c:\PROG\STLport\stlport) и передвинуть эту строчку выше всех!
Library Files: ввести путь к скомпилированным библиотекам (c:\PROG\STLport\lib) , расположение строчки не важно.
9. После создания проекта, необходимо убедится, что бы Run-time библиотеки компоновались как Multithreaded или Debug Multithreaded. Для этого надо зайти Project->Settings->C/C++->Code Generation -> Use run-time library .



Ошибка error LNK2001: unresolved external symbol позникает по причине пункта 9 !!!
Автор: distance
Дата сообщения: 07.10.2005 16:25
Возможно у тебя STLport собрана без IOStreams..
Пересобери с такими опциями в stl_user_config.h

// #define _STLP_NO_IOSTREAMS 1

так же (по желанию) можно добавить это
#define _STLP_NEW_PLATFORM_SDK 1
#define _STLP_USE_BOOST_SUPPORT 1

также, если проект собирается с отладочными опциями, то должно быть
#define _STLP_DEBUG 1

можно попробовать откатиться на 5.0-1031
по личным ощущениям, самая безпроблемная сборка, особенно при связке stlport+boost
Автор: MarfaKudesnica
Дата сообщения: 07.10.2005 21:13
distance
Неа, эт не поможет. Но опции действительно интересные, я их смотрел до того как сделал всё. Поможет пункт 9. в третьем посте здесь. Как раз перед тобой


Удалось выяснить следующее:
STLport по дефолту компонуется как MultiThread, скомпоновать его как Сингл проблематично. Поэтому проект VC использующий STLport должен тоже быть скомпонован как MultiThread. Изменить опции проекта в Project->Settings->C/C++->Code Generation -> Use run-time library

Страницы: 1

Предыдущая тема: Delphi Registry


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.