CaptainFlint

|
Posted: Sun Feb 20, 2005 14:00 Post subject: |
|
|
Parcan
В DLL своя специфика. Нельзя сказать, что если EXE работает, то и DLL будет, это абсолютно неверно. Я лично на это наткнулся, когда писал плагин VirtualDisk. Запускаю программу filedisk.exe - всё отлично работает, диск подключается. Запускаю абсолютно тот же самый код, но скомпилированный в виде DLL - при подключении диск в системе появляется, но все обращения к нему обламываются. В конце концов выяснил: там не закрывались некоторые хендлы. Отдельной программе это пофигу: при завершении система сама всё закроет. А DLL, пока не закроется Тотал, не будет выгружаться, так и держит хендлы открытыми, блокируя доступ.
И это лишь один пример. Сколько их может быть неучтённых... Оно часто так бывает - вроде, всё очевидно, ошибиться негде. Ан нет...
И ещё: частенько ошибки вылезают не в том месте, где их причина. Вполне может оказаться, что ошибка чуть ли не в самом начале кода, но проявляется она только после определённых действий, причём в таком месте, где весь код начисто вылизан и абсолютно корректен. Поиск ошибок - очень непростое занятие...
А вообще, подобные обсуждения без собственно кода - это переливание из пустого в порожнее. Попробуй хоть как-то локализовать ошибку, урезать проект как можно сильнее, чтобы ошибка по-прежнему воспроизводилась, и выложи в общий доступ. Тогда, возможно, кто-то и найдёт, в чём проблема. Ну или в самом деле, докажет, что ошибка в компиляторе (такое тоже, конечно, не исключено, хотя и маловероятно). Кстати говоря, сервис-паки на студию установлены? А то мало ли... |
|