Здравствуйте, Left2, Вы писали:
L>Ещё я бы отметил такой минус как необходимость наличия администраторских прав для регистрации COM Dll.
не админских, а Power User
Здравствуйте, Left2, Вы писали:
aik>>Передача параметров в пределах приложения — никаких особенных правил не требует из-за единого адресного пространства, L>Не совсем так. Передача, к примеру, строк в/из Dll требует серьёзных извращений (почитай как народ мучается при передаче std::string или std::vector между двумя модулями, скомпилированными с разными CRT).
Дискуссия пошла в сторону Во1ых, с привлечением COM'а проблема не исчезнет. COM вовсе про такие приколы не понимает. Во2ых, от CRT либо лучше сразу избавиться, либо использовать динамический CRT.
aik>Дискуссия пошла в сторону Во1ых, с привлечением COM'а проблема не исчезнет. COM вовсе про такие приколы не понимает. Во2ых, от CRT либо лучше сразу избавиться, либо использовать динамический CRT.
1. C привлечением COM строки передаются как BSTR, и об этих проблемах забывают
2. от CRT избавиться не так-то просто. Динамический CRT заставляет таскать с собой дополнительные Dll, которые к тому же никак не решают проблемы если какая-то из Dll с которыми ты взаимодействуешь линкует CRT статически
Вообще-то главная моя мысль была в том что в COM передача строк стандартизована, за что ему низкий поклон — не имеем проблем на казалось бы ровном месте.
Здравствуйте, Left2, Вы писали:
aik>>Дискуссия пошла в сторону Во1ых, с привлечением COM'а проблема не исчезнет. COM вовсе про такие приколы не понимает. Во2ых, от CRT либо лучше сразу избавиться, либо использовать динамический CRT. L>1. C привлечением COM строки передаются как BSTR, и об этих проблемах забывают
BSTR тебе никто не запрещает использовать и без COM'а.
L>2. от CRT избавиться не так-то просто. Динамический CRT заставляет таскать с собой дополнительные Dll, которые к тому же никак не решают проблемы если какая-то из Dll с которыми ты взаимодействуешь линкует CRT статически
msvcrt.dll — она много где есть. Чуть ли не c IE4 пошла. Не надо ее таскать.
L>Вообще-то главная моя мысль была в том что в COM передача строк стандартизована, за что ему низкий поклон — не имеем проблем на казалось бы ровном месте.
Да, но использование BSTR != использованию COM. Да SysAllocString — не самый лучший аллокатор, вообще говоря.
А вообще — не понимаю о чем спорим...
aik>BSTR тебе никто не запрещает использовать и без COM'а.
согласен. но пока не было COM, BSTR тоже не было
aik>msvcrt.dll — она много где есть. Чуть ли не c IE4 пошла. Не надо ее таскать.
Проблема не в отсутствии или наличии msvcrt.dll. Проблема в том что если кто-то ещё использует CRT статически (либо пользует самописный CRT) — будут проблемы.
aik>Да, но использование BSTR != использованию COM. Да SysAllocString — не самый лучший аллокатор, вообще говоря.
BSTR — часть COM, причём неотьемлимая
aik>А вообще — не понимаю о чем спорим... ?
Здравствуйте, Left2, Вы писали:
aik>>BSTR тебе никто не запрещает использовать и без COM'а. L>согласен. но пока не было COM, BSTR тоже не было
Да много чего не было. Под COM MS некоторое количество сопутствующих утилит слабал, потому что просто пришлось. BSTR, реестр и так далее.
aik>>msvcrt.dll — она много где есть. Чуть ли не c IE4 пошла. Не надо ее таскать. L>Проблема не в отсутствии или наличии msvcrt.dll. Проблема в том что если кто-то ещё использует CRT статически (либо пользует самописный CRT) — будут проблемы.
В пределах проекта разный CRT? Бить по рукам.
aik>>Да, но использование BSTR != использованию COM. Да SysAllocString — не самый лучший аллокатор, вообще говоря. L>BSTR — часть COM, причём неотьемлимая
И шо, требует CoInitialize?
aik>>А вообще — не понимаю о чем спорим... L> ?
Здравствуйте, Left2, Вы писали:
aik>>Да, но использование BSTR != использованию COM. Да SysAllocString — не самый лучший аллокатор, вообще говоря. L>BSTR — часть COM, причём неотьемлимая
Но есть же еше LPSTR, LPWSTR и VirtualAlloc, к примеру. Или GlobalAlloc — кому что больше по душе. Использовать библиотеки, в которых происходит выделение памяти посредством runtime между несколькими модулями, имхо, как-то нездраво.
Здравствуйте, aik, Вы писали:
aik>>>msvcrt.dll — она много где есть. Чуть ли не c IE4 пошла. Не надо ее таскать. L>>Проблема не в отсутствии или наличии msvcrt.dll. Проблема в том что если кто-то ещё использует CRT статически (либо пользует самописный CRT) — будут проблемы.
aik>В пределах проекта разный CRT? Бить по рукам.
Никогда не приходилось пользоваться чужими либами без исходников?
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, AndrewJD, Вы писали:
aik>>>>msvcrt.dll — она много где есть. Чуть ли не c IE4 пошла. Не надо ее таскать. L>>>Проблема не в отсутствии или наличии msvcrt.dll. Проблема в том что если кто-то ещё использует CRT статически (либо пользует самописный CRT) — будут проблемы. aik>>В пределах проекта разный CRT? Бить по рукам. AJD>Никогда не приходилось пользоваться чужими либами без исходников?
Приходилось, но всегда было из чего выбрать и не пользоваться корявыми либами