Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
hdnn
13 / 13 / 10
Регистрация: 14.11.2012
Сообщений: 56
Завершенные тесты: 2
#1

Разный результат работы функции в release и debug

04.02.2014, 13:36. Просмотров 520. Ответов 4
Метки нет (Все метки)

Такая проблема. Есть программа, в которой объявляется переменная типа std::string. Ниже вызывается функция, реализованная в dll, принимающая данные в формате void*. А в самой функции заполняем эту строку каким-то текстом. В релиз и дебаг версиях dll-ки значения на выходе разные. Если использовать MFC-шный CString вместо STL-вского string - всё проходит корректно.

Функция exe-шника:
C++
1
2
3
4
5
6
int CTesJobTab2::SetDataLog(void)
{
    string sdata;
    m_work->GetParam(33333, &sdata);
    return 0;//DEBUG:sdata=="1TEST", RELEASE: sdata=="T"
}
Функция DLL:
C++
1
2
3
4
5
6
7
8
9
10
int CGeneralWork::GetProperty( int key, void* data)
{
    switch (key)
    {
    case 33333:
        (string*)data->append("1TEST");
    break;
    }
    return 0;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2014, 13:36
Ответы с готовыми решениями:

Release/Debug
Здравствуйте! Пишу сложную расчётную программу. И мне важна скорость выполнения...

Debug и Release разница?
объяснить пожалуйста разница между Debug И Release? и почему после компиляции...

difference between debug and release MVS2010
Ума не приложу в какую сторону копать:read: Следующий фрагмент кода, в Дебаге...

Release работает, Debug - ошибка
Подскажите, товарищи. Есть код (взял с форума) : #include <iostream>...

Неопределенное поведение в Debug и Release
Писал программу для сложения больших чисел (в файле содержатся числа с...

4
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.02.2014, 05:33 #2
Цитата Сообщение от hdnn Посмотреть сообщение
В релиз и дебаг версиях dll-ки значения на выходе разные.
Как видите, что разные? Почему имена функций разные: GetParam(), GetProperty()?
0
hdnn
13 / 13 / 10
Регистрация: 14.11.2012
Сообщений: 56
Завершенные тесты: 2
05.02.2014, 10:54  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
Как видите, что разные?
Пишем приходящие сообщения в лог и смотрим.
Цитата Сообщение от alsav22 Посмотреть сообщение
Почему имена функций разные: GetParam(), GetProperty()?
GetParam() - функция класса, загружающего и взаимодействующего с dll. А внутри ф-ии GetParam просто вызывается GetProperty().

Пока решили использовать char* для вычитывания сообщений. Не так удобно, но работает как часы.

Добавлено через 22 минуты
Корень проблемы, судя по всему, кроется в различных механизмах выделения памяти под релизом и дебагом. Мы можем просто скопировать кусок памяти с сообщением в нужный момент.
STL не хочет корректно работать для случая обмена данными между exe и dll. Хотелось бы понять почему.
0
alsav22
5439 / 4834 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
05.02.2014, 10:58 #4
C++
1
(string*)data ->append("1TEST");
У меня такое не компилируется.
0
hdnn
13 / 13 / 10
Регистрация: 14.11.2012
Сообщений: 56
Завершенные тесты: 2
05.02.2014, 11:11  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
(string*)data ->append("1TEST");
У меня такое не компилируется.
Моя описка, не хватает скобок...
C++
1
((string*)data) ->append("1TEST");
0
05.02.2014, 11:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2014, 11:11

Debug и Release сборки в Visual Studio
Я начал писать проект на c++ с использованием sfml. При сборке тестовой...

Кодировка в режиме сборки Debug / Release
В проекте использую только Use Multi-Byte Character Set, то есть ASCII. В...

В чем разница между Debug and Release?
Какие действия выполняет debug в Visual studio и какие Release, в чем разница?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru