Почему моя библиотека вынуждает включить mfc40.lib? - PullRequest
0 голосов
/ 21 октября 2011

Поэтому я несколько дней бился головой о стол, пытаясь понять, почему мой проект MFC продолжал терпеть неудачу на этапе соединения, потому что он не мог найти mfc40.lib. Я проверил #pragma comment, я проверил входные данные lib в настройках проекта, я щелкал папку за папкой, я НИЧЕГО не нашел.

Непосредственно перед тем, как я собирался сойти с ума, я понял, что grepWin по какой-то причине игнорирует файлы LIB, поэтому я открыл старую библиотеку в моем текстовом редакторе и увидел это:

-defaultlib: mfc40.lib -defaultlib: mfcs40.lib -defaultlib: msvcrt.lib -defaultlib: kernel32.lib -defaultlib: user32.lib -defaultlib: gdi32.lib -defaultlib: com-db lib -defaultlib: advapi32.lib -defaultlib: shell32.lib -defaultlib: comctl32.lib / include: _ afxForceEXCLUDE / include: _afxForceUSRDLL / include: __ afxForceSTDAFX -defaultlib: LIB -defaultlib: OLDNAMES

По какой-то странной причине указанная выше читаемая человеком часть фактически была в самом файле LIB, поэтому я могу только предположить, что, поскольку я связываюсь с этой библиотекой напрямую, она НЕПОСРЕДСТВЕННО вызывает включение mfc40.lib (и друзей).

Это то, что происходит? Почему вышеупомянутое внутри файла LIB? Объяснение того, почему это происходит, было бы бонусом.

Также указанная библиотека взята из Exchange SDK. Я собираю этот проект MFC в VS2008.

1 Ответ

0 голосов
/ 21 октября 2011

Если при создании проекта для вашей библиотеки вы выбрали библиотеку на основе MFC, любая доступная версия MFC будет добавлена ​​в качестве библиотеки по умолчанию.Чтобы удалить его, в свойствах вашего проекта перейдите в Linker> Input> Ignore Specific Libraries и введите mfc40.lib.

Подробнее об этом свойстве: http://msdn.microsoft.com/en-us/library/3tz4da4a%28v=VS.90%29.aspx

...