Сейчас на форуме: subword, rtsgreg1989, zds, _MBK_ (+5 невидимых) |
eXeL@B —› Основной форум —› Помогите с STL. Не могу понять структуру std::string |
Посл.ответ | Сообщение |
|
Создано: 10 декабря 2007 18:49 · Личное сообщение · #1 Кратко: Мне нужно запустить процедуру "?TimeStampAdd@CTimeStampTable@@QAE_NABV?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@W4INIT_REQUEST_TYPE@@@Z" из одной дллки (hфайла нет). В С++ стиле эта функция выглядит так: [CODE=cpp]bool __thiscall CTimeStampTable::TimeStampAdd(class std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>> const &, enum INIT_REQUEST_TYPE)[/CODE] Ну я скачал последний STL и запустил эту функцию передав ей переменную s типа std::string (пробовал также заводить std::basic_string< char,std::char_traits<char>,std::allocator<char> > но это тоже самое помоему). Но в результате получил ошибку в этой процедуре (TimeStampAdd()). Начал разбираться с помощью дебаггера (асмдебаггера IDA) в том какие параметры передаю функции я и какие передает другое приложение написанное не мной. Я передаю структуру типа (переменная s в дебагере имеет следующий вид): S1 : { void * P; //сслыка на какой то участок памяти (мне непонятный =) ) char[8] c = 'a','b','c','d','e','f','g'; int Length = 8; } А приложение передает структуру типа: S2 : { int i = 1; //число так же мне не понятное char * c = "absdefgh"; int Length = 8; } То есть структуры разные! Знатоки STL объясните пожалуйста, как мне получить string такого же типа как S2??? Приложение (и библиотека) написаны на Visual Studio 6.0. Может ли быть такое что предудыщие версии STL использовали другой вид std::string? |
|
Создано: 10 декабря 2007 20:15 · Личное сообщение · #2 Сейчас полазил по процедуре дебагером и выяснил что ошибка происходит стопудово изза того что я передаю параметр string не в том формате!!! В процедуре происходит обращение к ('a','b','c','d') как к указателю, что и приводит естественно к ошибке. Кто знает ответ как мне сделать стринг вида S2 или догадывается изза чего такая конитель с типами, пожалуйста отзовитесь!!! |
|
Создано: 10 декабря 2007 22:54 · Поправил: s0larian · Личное сообщение · #3 shob_vas, чувак, компиль код С++ компилером и передавай reference на обычный std::string объект. Тебе нужет весь С++ run-time, на асме это не пишется. C каждой версией VC++/VS идут standard C++ libraries, в которые входит и STL.
P.S. проект надо компилить в ANSI. |
|
Создано: 11 декабря 2007 00:06 · Личное сообщение · #4 |
|
Создано: 11 декабря 2007 00:23 · Поправил: s0larian · Личное сообщение · #5 |
|
Создано: 11 декабря 2007 00:28 · Личное сообщение · #6 Ахренеть! Классы std::string в Visual C 7.0 и в Visual C 6.0 реально отличаются!!! Какое же это сложное занятие ковырять программы без исходников. Столько всего нового узнал за эти две недели. Странно что голова не взорвалась! Может кто подскажет как конвертить стринги из нового формата в старый? Я даже не знаю по каким ключевым словам весьти поиск! |
|
Создано: 11 декабря 2007 00:31 · Личное сообщение · #7 |
|
Создано: 11 декабря 2007 01:18 · Личное сообщение · #8 |
|
Создано: 11 декабря 2007 03:16 · Личное сообщение · #9 |
|
Создано: 11 декабря 2007 07:55 · Поправил: s0larian · Личное сообщение · #10 shob_vas, скомпиль код тем же компилером, а иначе потратишь дикое кол-во времяни впустую. Если в проге dynamic runtime (как подсказал S_T_A_S_) то тебе надо линковать против именно этих библиотек что бы был тот же работающий heap. Новый VS тебе этого не даст сделать, кочни старый компилер и header and libs. IDE тебе не нужен. P.S. реализации STL разные, но писаны одним и тем же человеком - PJ Plauger. |
|
Создано: 11 декабря 2007 09:52 · Личное сообщение · #11 |
eXeL@B —› Основной форум —› Помогите с STL. Не могу понять структуру std::string |