Само-созидатель проблем
Раза три на внедрениях биометрии у клиентов я сталкивался с проблемой, которую сам и породил.
Причем уже после второго раза я об этой проблеме знал, но все пытался записать себе, как ее решить, вместо того, чтобы окончательно от него избавиться.
Дело в том, что моя программа взаимодействует с двумя сканерами — старым Anviz OA99 и новым Anviz Ubio.
Для нового Ubio выпустили новую версию SDK, но размещалась она в том же файле — AvzScanner.dll
Чтобы программа могла работать с двумя сканерами, Dll для старой версии я оставил с таким же названием, а новую переименовал в AvzScannerubio.dll.
Все работало отлично.
Но потом мне понадобилось написать уже не программу (приложение), а внешнюю компоненту. Я ее писал уже изначально только для UBIO и dll-файл при компиляции в VB подключал в этом модуле:
Разумеется, под AvzScanner.dll я подразумевал уже новую версию обработки.
Но в VB используется динамическая линковка библиотек, поэтому иногда у клиента он подтягивал AvzScanner.dll со старой версией библиотеки.
Чтобы не бороться с последствиями, а окончательно решить проблему, я поменял в коде название библиотеки:
И это кардинально решило проблему.
Поэтому иногда лучше подумать о причинах, чем лечить последствия.
Простая вариация проблемы известной как DLL hell, ей уже 25+ лет.
ничто не ново под Луной.