Получается что, что я не могу использовать на своем компьютере линковку одновременно и с 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
_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
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
>> Получается что, что я не могу использовать на своем компьютере линковку одновременно и с mt-rtl и с sl-rtl?!! (в разных проектах, конечно).
ПК>Single Threaded не поддерживается для STLport. Можно сделать самому, но там достаточно много мороки. Оно настолько нужно? Может, все-таки, обойтись Multi Threaded?
Да нет... просто я использую С++ на каждый день для всяких маленьких задач типа сортировки списка адресов. И как-то раздражает, что даже для использования тупого билиотечного класса типа std::vector нужно лезть в настройки и менять тип используемой библотеки. И в командной строке не забыть /MT...
>> Вот, еще и такой вопрос. Откуда могут быть такие варнинги, если vc70 даже близко не лежал на моей машине? (билдил я, как уже сказал, в vs2003)
ПК>Это лечится исправлением make-файла, так чтобы путь к PDB был туда же, где и библиотека.
спасибо. буду рыть...
Правильно работающая программа — просто частный случай Undefined Behavior
И еще такой вопрос. Как сделать так, что бы STLport отдавал всю память, которую он забрал по ходу работы программы? А то все проверки memory-leak взвывают.
Можно ли сделать так, что бы он использовал для выделени памяти не свой менеджер памяти ( который вызывает мой operator new c запросом болших кусков памяти), а "по-честному"? Хоть для каждого нода списка. А то когда в программе сразу два оптимизированных менеджера памяти, то это имхо нехорошо К тому же его менежер навярняка многопоточный, а мне этот оверхед нафиг не нужно. У меня память при помощи new только из одного основного потока вызывается.
Правильно работающая программа — просто частный случай Undefined Behavior
_Winnie:
> Можно ли сделать так, что бы он использовал для выделени памяти не свой менеджер памяти ( который вызывает мой operator new c запросом болших кусков памяти), а "по-честному"? Хоть для каждого нода списка. А то когда в программе сразу два оптимизированных менеджера памяти, то это имхо нехорошо
В конфиге STLport: _STL_USE_NEW_ALLOC или как-то так. Только после этого STLport нужно пересобрать.
Posted via RSDN NNTP Server 1.9 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>_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.
*
*/