Сишная библиотека в VB release-версия

Вопросы по языкам программирования Си и С++.
SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Сишная библиотека в VB release-версия

Сообщение SLIM » 24.09.2010 (Пт) 0:13

Где-то у нас на форуме встречал, но так и не нашел проблему.
Проблема в следующем. Написана библиотека в VS 2008 на C++. Экспортирует одну функцию.
Пытаюсь ее вызвать в VB. Работает стабильно через раз - в плохом случае просто вылетает, в хорошем случае, работает пару раз, потом тоже вылетает.
Причем все это происходит с release-версией библиотеки. С debug-все в порядке вроде.
Наблюдения следующие.
Ф-я пишет в xml-файл кое-что. К некоторым строкам добавляется какой-то хлам в release-версии. Причем добавляется стабильно к двум конкретным строкам. Если запустить первый раз - то к одной и работает дальше, запускаешь второй раз - добавляется хлам ко второй и работает дальше. Запускаешь третий раз - захламленный файл читать не хочет и вылетает. Интересно также поведение с чтением файла. В неком ноде есть слово на русском. Если слово менять, то при каких-то вариантах проходит, при каких-то нет. Эта нода кстати и захламляется.
В общем не могу понять от чего это. Пробовал запускать точно также в программе VC++ - все работает, причем в обоих версиях библиотеки.

Прочитал бегло статью на RSDN "пережить release". Толком мало что понял. Есть там упоминания о const и у меня в коде библиотеки есть функция, где требуется вводить параметр const, а я указываю не const. Но думаю это совсем не то.

Кто что может сказать? Юзать debug версию и не париться?
Пишите жизнь на чистовик.....переписать не удастся.....

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Сишная библиотека в VB release-версия

Сообщение BV » 26.09.2010 (Вс) 14:23

Без кода, остается предположить, что где-то имеются неинициализированные переменные, порча кучи или некорректно выровненные данные
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Сишная библиотека в VB release-версия

Сообщение SLIM » 26.09.2010 (Вс) 21:46

Ну...код приводить - много слишком будет.
Неинициализированных переменных нет - проверил. Куча тоже вроде не страдает. Вот по поводу невыровненных данных.

В общем стал я тестировать библиотеку на других студиях. Попробовал загрузить библиотек и вызвать функцию из-под VS. Все работает, вызывается, но работает некорректно одна функция. То же самое из-род билдера. Функция возвращает __int64, работает с LARGE_INTEGER. Вообще, по-идее, не должно было быть проблем.
Функция корректно работает в exe-шнике (т.е. копия кода той же библиотеки только в отдельном исполняемом). Но считает она некорректно.
Функцию в принципе привести могу, но в ней ли косяк - это вопрос.
И как все это связано с некорректной работой со строками в VB - ума не приложу.

Приводить весь код - дело напряжное, скоро я выложу проект на тестирование, но общий смысл такой
Библа экспортирует одну ф-ю, которая создает и запускает один поток, в котором, если нужно, будут запускаться дополнительные потоки время от времени.
Ну вот и представь - где тут искать жучка если код не твой.
Пишите жизнь на чистовик.....переписать не удастся.....

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Сишная библиотека в VB release-версия

Сообщение SLIM » 26.09.2010 (Вс) 22:38

SLIM писал(а):кцию в принципе привести могу, но в ней ли косяк - это вопрос.

Был косяк.
Но косяк с VB остается.
Пишите жизнь на чистовик.....переписать не удастся.....


Вернуться в С/С++

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList