sqlnclir.rll загружается и выгружается непрерывно
Я работаю с SQL Native Client 9 в приложении C++, которое взаимодействует с SQL Server 2000. Я сейчас работаю над отладкой, но кое-что, что я заметил, беспокоит меня (в основном потому, что это создает значительный беспорядок) - это sqlnclir.rll загружается и выгружается непрерывно, и следующие строки спамятся в мое окно вывода отладки.
'my_app.exe': Loaded 'C:\WINDOWS\system32\sqlnclir.rll', Binary was not built with debug information. The thread 'Win32 Thread' (0x9f4) has exited with code 0 (0x0). 'my_app.exe': Unloaded 'C:\WINDOWS\system32\sqlnclir.rll'
Идентификатор после "Win32 Thread" изменяется, но код выхода всегда равен 0.
Почему.rll загружается и выгружается постоянно, как это, и как я могу предотвратить это?
Если вышеупомянутый вопрос не является выполнимым вопросом, как я могу предотвратить рассылку вышеуказанных сообщений в окно "Вывод отладки" в MSVC 2005? В идеале, только для этого конкретного набора сообщений?
1 ответ
Обычно это происходит из-за того, что приложение (или, в данном случае, связанная библиотека) динамически загружается и выгружается через LoadLibrary[Ex] и т. Д. Возможно, это также создает / уничтожает поток в процессе.
Я не знаю ни одного способа подавления отдельных выходных сообщений отладки. Вы можете предотвратить конкретную повторную загрузку / выгрузку, загрузив библиотеку самостоятельно и удерживая ее за ручку на время вызовов (что должно помешать ОС ее разгрузить). Однако это не очень хорошее общее решение (например, библиотека может быть [плохо] закодирована, чтобы полагаться на то, что DLL не инициализируется между каждым вызовом, и в этом случае обходной путь может изменить поведение).
На более высоком уровне сохранение соединения с базой данных может привести к тому же результату, но это зависит от реализации собственной клиентской библиотеки SQL. Это то, что я, вероятно, попытался бы, хотя (или просто игнорировать вывод трассировки отладки).