Либо Python, PyQT, QT, либо Windows Vista находят мою dll, независимо от того, на что я ее переименую. Это нормально? - PullRequest
0 голосов
/ 01 ноября 2010

Я экспериментирую с PyQT и пытаюсь понять, как заставить его работать с Firebird. Я построил драйвер Firebird, но не смог заставить его работать, поэтому подумал, может быть, я поставил его не в нужное место. Поэтому я попытался поэкспериментировать с драйвером SQLite, поскольку PyQT поставлялся с ним уже установленным, с рабочими примерами. Я подумал, что если я переименую все файлы драйвера qsqlite4.dll, которые смог найти, в конце концов программа-пример перестанет работать, когда я переименую ту, которую она фактически использовала. Это не сработало. Поэтому я попытался переименовать папку «site-packages \ pyqt4 \ plugins \ sqldrivers» в «site-packages \ pyqt4 \ plugins \ sqldrivers-old», и это было сделано. Программа-пример перестала работать. Поэтому я изменил имя папки обратно и попытался переименовать все файлы в папке. Но пример программы снова начал работать. Затем я переместил файл qsqlite4.dll в подкаталог, и он перестал работать. Поэтому я переместил его обратно и переименовал в blah.blah.blah. И это снова сработало. Затем я открыл файл blah.blah.blah с помощью notepad ++ и удалил некоторые элементы в верхней части файла, и это не позволило программе примера работать. Так что я в замешательстве. Насколько я могу судить, либо Python, PyQT, QT, либо Windows Vista находят dll, независимо от того, на что я ее переименую, если она находится в нужной папке. Я даже попытался переименовать его в имя одного из других dll, думая, что, возможно, это запутает его. Но это только смутило меня. Это нормально?

edit: я думаю, что это как-то связано с плагинами

1 Ответ

0 голосов
/ 15 декабря 2010

Да, инфраструктура плагинов Qt довольно простая и надежная.

Она пытается загрузить каждый файл в каталоге sqldrivers.Если это успешно, каждый dll тогда выполняет функцию, которая регистрирует все функции, которые поддерживает плагин.

Затем ваше приложение инициализируется.Если все необходимые функции доступны, он работает правильно, в противном случае происходит какая-либо форма обработки ошибок или исключений.

...