Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > Ошибка при работе с DLL |
Автор: LexusCheby 30.1.2007, 09:12 |
Всем доброго времени суток! Проблема возникает при вызове функции из DLL В проекте, где создана DLL эта ф-я описана следующим образом: void SetMode (unsigned char _Mode) { if (_Mode) Mode = 1; else Mode = 0; } где Mode - глобальная переменная Так вот. Когда клиентская программа делает вызов SetMode (1); Выходит окно сообщения Priveleged Instruction. После закрытия этого сообщения программа работает правильно. ![]() Но уж очень хочется избавиться от этого всплывающего окошка. Help |
Автор: LexusCheby 30.1.2007, 12:12 |
Исправил следующим образом: Вызов SetMode поместил в блок try и поставил пустой обработчик исключения catch(EPrivilege &a) Точно не могу объяснить почему, но ошибка пропала. Кто знает тонкости винды и работы внешних обработчиков исключений - поясните плиз |
Автор: LexusCheby 30.1.2007, 13:22 |
Ну тогда подскажите откуда она берется. DLL никаких ассемблерных строк для работы с com портами не использует. Вызовы других подобных функций ничем не отличаются. Мне кажется это ложное исключение. |
Автор: W4FhLF 30.1.2007, 13:22 |
Надо под отладчиком глянуть в какой ассемблерный код транслируется такая функция, ибо это сообщение об ошибке выползает тогда, когда программа пытается выполнить недопустимую, на пользовательством уровне, команду процессора. |