Я использую Visual Studio 2008. У меня есть DLL и тестовая программа EXE. Для DLL есть заголовочный файл, содержащий это:
#ifdef _DEBUG
#pragma comment(lib, "FooD.lib")
#else
#pragma comment(lib, "Foo.lib")
#endif
Целью является динамическое связывание с FooD.dll через библиотеку импорта FooD.lib для отладочной сборки и с Foo.dll для сборки выпуска. Проблема в том, что когда я запускаю тестовую программу отладки, она хочет быть связана с Foo.dll.
Я убедился, что для тестовой программы в отладочной сборке определено _DEBUG
. Если я заменим #pragma comment
на директиву #error
, я увижу ошибку, поэтому уверен, что #pragma comment
обрабатывается так, как я ожидал.
Я также подтвердил, что существуют и FooD.dll
, и FooD.lib
. (Foo.dll
и Foo.lib
не существуют.) Но во время выполнения я получаю сообщение об ошибке «Не удается найти Foo.dll».
Есть идеи, что может пойти не так, или где я могу выяснить, почему во время выполнения ищется неправильная DLL?