проблемы с stlport. помогите пожалуйста.
От: _Winnie Россия C++.freerun
Дата: 22.06.04 21:12
Оценка:
собирал я его так: вызвал консоль Visual Studio .NET 2003 Command Prompt, и набрал "nmake vc71.mak". Все собралось, все замечательно... но...

stlport_vc71_static.lib
stlport_vc71_stldebug_static.lib
stlport_vc71.lib
stlport_vc71_stldebug.lib

Я ожидал что-то вроде

stlport_vc71_static_mt.lib
stlport_vc71_static_st.lib
stlport_vc71_stldebug_static_mt.lib
stlport_vc71_stldebug_static_st.lib
stlport_vc71.lib
stlport_vc71_stldebug.lib

Получается что, что я не могу использовать на своем компьютере линковку одновременно и с mt-rtl и с sl-rtl?!! (в разных проектах, конечно).
(по умолчания stlport-либы используют multi-threaded runtime library. Поэтому еще такой вопрос: как собрать так, что бы использовалась single-threaded?)

имхо, корень зла в файле stl_select_lib.h
# if !defined (_STLP_NO_OWN_IOSTREAMS)

#  if ! defined (_STLP_LIB_STATIC_SUFFIX)
#   define _STLP_LIB_STATIC_SUFFIX ""
#  endif

// Note : the code below is intended to make use of compiled
// STLport iostreams easier. If you are with to change names used for
// STLport libraries , please also change RELEASE_NAME and DEBUG_NAME
// macros in makefile ../../src/vc6.mak (or whatever .mak you are using to build
// STLport). If you are using binaries, you may just rename the binaries.
#    if ! defined (__BUILDING_STLPORT) && ! defined (_STLP_DONT_FORCE_MSVC_LIB_NAME)
#     if defined (_STLP_USE_DECLSPEC)
#      ifdef _STLP_DEBUG
#       pragma comment(lib, _STLP_LIB_BASENAME"_stldebug.lib")
#      elif (defined (_DEBUG) || defined (__DEBUG)) && defined (_STLP_USE_DEBUG_LIB)
#       pragma comment(lib, _STLP_LIB_BASENAME"_debug.lib")
#      else
#       pragma comment(lib, _STLP_LIB_BASENAME".lib")
#      endif
#     else /* _STLP_USE_DECLSPEC */
// fbp : for static linking, debug setting _MUST_ correspond to what
// has been compiled into binary lib
#      ifdef _STLP_DEBUG
#       if (! defined (_DEBUG))
#        error "For static link with STLport library, _DEBUG setting MUST be on when _STLP_DEBUG is on. (/MTd forces _DEBUG)"
#       endif
#       pragma comment(lib, _STLP_LIB_BASENAME"_stldebug"_STLP_LIB_STATIC_SUFFIX".lib")
#      elif (defined (_DEBUG) || defined (__DEBUG)) && defined (_STLP_USE_DEBUG_LIB)
#       pragma comment(lib, _STLP_LIB_BASENAME"_debug"_STLP_LIB_STATIC_SUFFIX".lib")
#      else
#       pragma comment(lib, _STLP_LIB_BASENAME""_STLP_LIB_STATIC_SUFFIX".lib")
#      endif
#     endif /* _STLP_USE_DECLSPEC */
#    endif /* __BUILDING_STLPORT */
#   endif /* _STLP_OWN_IOSTREAMS */



Вот, еще и такой вопрос. Откуда могут быть такие варнинги, если vc70 даже близко не лежал на моей машине? (билдил я, как уже сказал, в vs2003)


Linking...
stlport_vc71_static.lib(dll_main.obj) : warning LNK4204: 'e:\Projects\test\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info
stlport_vc71_static.lib(fstream.obj) : warning LNK4204: 'e:\Projects\test\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info
stlport_vc71_static.lib(ios.obj) : warning LNK4204: 'e:\Projects\test\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info

и еще пара десятков таких. ОЧЕНЬ РАЗДРАЖАЕТ.


Build Time 0:01
Правильно работающая программа — просто частный случай Undefined Behavior
Re: проблемы с stlport. помогите пожалуйста.
От: Павел Кузнецов  
Дата: 22.06.04 21:25
Оценка: 1 (1)
_Winnie:

> собирал я его так: вызвал консоль Visual Studio .NET 2003 Command Prompt, и набрал "nmake vc71.mak". Все собралось, все замечательно... но... <...>

> Получается что, что я не могу использовать на своем компьютере линковку одновременно и с mt-rtl и с sl-rtl?!! (в разных проектах, конечно).

Single Threaded не поддерживается для STLport. Можно сделать самому, но там достаточно много мороки. Оно настолько нужно? Может, все-таки, обойтись Multi Threaded?

> Вот, еще и такой вопрос. Откуда могут быть такие варнинги, если vc70 даже близко не лежал на моей машине? (билдил я, как уже сказал, в vs2003)

>
> stlport_vc71_static.lib(dll_main.obj) : warning LNK4204: 'e:\Projects\test\Release\vc70.pdb' is missing debugging information for referencing module; linking object as if no debug info
>
> и еще пара десятков таких. ОЧЕНЬ РАЗДРАЖАЕТ.

Это лечится исправлением make-файла, так чтобы путь к PDB был туда же, где и библиотека.
Posted via RSDN NNTP Server 1.9 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: проблемы с stlport. помогите пожалуйста.
От: _Winnie Россия C++.freerun
Дата: 23.06.04 10:35
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Получается что, что я не могу использовать на своем компьютере линковку одновременно и с mt-rtl и с sl-rtl?!! (в разных проектах, конечно).


ПК>Single Threaded не поддерживается для STLport. Можно сделать самому, но там достаточно много мороки. Оно настолько нужно? Может, все-таки, обойтись Multi Threaded?


Да нет... просто я использую С++ на каждый день для всяких маленьких задач типа сортировки списка адресов. И как-то раздражает, что даже для использования тупого билиотечного класса типа std::vector нужно лезть в настройки и менять тип используемой библотеки. И в командной строке не забыть /MT...

>> Вот, еще и такой вопрос. Откуда могут быть такие варнинги, если vc70 даже близко не лежал на моей машине? (билдил я, как уже сказал, в vs2003)


ПК>Это лечится исправлением make-файла, так чтобы путь к PDB был туда же, где и библиотека.

спасибо. буду рыть...
Правильно работающая программа — просто частный случай Undefined Behavior
Re[2]: проблемы с stlport. помогите пожалуйста.
От: _Winnie Россия C++.freerun
Дата: 23.06.04 10:45
Оценка:
И еще такой вопрос. Как сделать так, что бы STLport отдавал всю память, которую он забрал по ходу работы программы? А то все проверки memory-leak взвывают.

Можно ли сделать так, что бы он использовал для выделени памяти не свой менеджер памяти ( который вызывает мой operator new c запросом болших кусков памяти), а "по-честному"? Хоть для каждого нода списка. А то когда в программе сразу два оптимизированных менеджера памяти, то это имхо нехорошо К тому же его менежер навярняка многопоточный, а мне этот оверхед нафиг не нужно. У меня память при помощи new только из одного основного потока вызывается.
Правильно работающая программа — просто частный случай Undefined Behavior
Re[3]: проблемы с stlport. помогите пожалуйста.
От: Павел Кузнецов  
Дата: 23.06.04 14:20
Оценка:
_Winnie:

> Можно ли сделать так, что бы он использовал для выделени памяти не свой менеджер памяти ( который вызывает мой operator new c запросом болших кусков памяти), а "по-честному"? Хоть для каждого нода списка. А то когда в программе сразу два оптимизированных менеджера памяти, то это имхо нехорошо


В конфиге STLport: _STL_USE_NEW_ALLOC или как-то так. Только после этого STLport нужно пересобрать.
Posted via RSDN NNTP Server 1.9 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[4]: проблемы с stlport. помогите пожалуйста.
От: _Winnie Россия C++.freerun
Дата: 29.06.04 00:19
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>_Winnie:


>> Можно ли сделать так, что бы он использовал для выделени памяти не свой менеджер памяти ( который вызывает мой operator new c запросом болших кусков памяти), а "по-честному"? Хоть для каждого нода списка. А то когда в программе сразу два оптимизированных менеджера памяти, то это имхо нехорошо


ПК>В конфиге STLport: _STL_USE_NEW_ALLOC или как-то так. Только после этого STLport нужно пересобрать.


/*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* Permission to use or copy this software for any purpose is hereby granted
* without fee, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted,
* provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice.
*
*/

// # define _STLP_NO_OWN_IOSTREAMS 1
// #define _STLP_NO_NEW_IOSTREAMS 1
// # define _STLP_NO_IOSTREAMS 1
//#define _STLP_DEBUG 1
//#define _STLP_NO_CUSTOM_IO
// #define _STLP_NO_RELOPS_NAMESPACE 1
// # define _STLP_REDEFINE_STD 1
// # define _STLP_WHOLE_NATIVE_STD
// # define _STLP_DEBUG_UNINITIALIZED 1
// #define _STLP_SHRED_BYTE 0xA3
// #define _STLP_GCC_USES_GNU_LD
// define _STLP_NO_ANACHRONISMS 1
// define _STLP_NO_EXTENSIONS 1
// # define _STLP_USE_MFC 1
//# define _STLP_NEW_PLATFORM_SDK 1
// # define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS 1

неа...
Правильно работающая программа — просто частный случай Undefined Behavior
Re[5]: проблемы с stlport. помогите пожалуйста.
От: Alex Reyst Россия  
Дата: 29.06.04 03:30
Оценка:
Здравствуйте, _Winnie, Вы писали:

_W>неа...


Не там смотришь, смотри _site_config.h.
Только очень хорошо подумай — а оно тебе надо?
Все, что здесь сказано, может и будет использоваться против меня...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.