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. Это то, что я, вероятно, попытался бы, хотя (или просто игнорировать вывод трассировки отладки).

Другие вопросы по тегам