Всем добрый день!
Компилирую ATL Project, работающий с MFC, и в процессе линковки выдается такое сообщение:
Linking...
Searching libraries
Searching c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfcs80d.lib:
mfcs80d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in Conn1C.obj
Searching c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\lib\mfc80d.lib:
Searching c:\Program Files\Microsoft Visual Studio 8\VC\lib\msvcrtd.lib:
Searching c:\Program Files\Microsoft Visual Studio 8\VC\lib\kernel32.lib:
Нашел информацию об этой ошибке в
rsdnАвтор(ы): Ivan
Дата: 13.11.2004
Неужто баг очередной? Создаем ATL проект, в опциях убираем аттрибуты, включаем поддержку MFC, включаем Allow merging of proxy/stub code, компилим проект. ВСЕ ок. Закрываем проект. Можно выйти из студии. Открываем опять этот проект, и делаем Rebuild Solution, получаем ошибки:
Linking...
mfcs71d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in MSVCRTD.lib(dllmain.obj)
. Указал явно порядок библиотек в Additional Dependencies, но не помогает, хотя пробовал и в одном порядке указать lib'ы и в другом. Сейчас порядок такой: mfcs80d.lib mfc80d.lib msvcrtd.lib
Кто-нибудь может подсказать, как побороть эту ошибку?
Заранее спасибо ответившим.
user_20060712 пишет:
> Кто-нибудь может подсказать, как побороть эту ошибку?
Гугль может:
http://www.google.ru/search?q=error+LNK2005+_DllMain 
Posted via RSDN NNTP Server 2.0
Здравствуйте, ArtDenis, Вы писали:
AD>user_20060712 пишет:
>> Кто-нибудь может подсказать, как побороть эту ошибку?
AD>Гугль может:
AD>http://www.google.ru/search?q=error+LNK2005+_DllMain
Спасибо за ответ.
Гугл не помог. Все рекомендации на найденных по запросу ссылках сводятся примерно к тому, что описано в упомянутой статье на РСДН.
Докопаться до сути все же удалось.
В исходниках обнаружилось два обращения к PrxDllMain
extern "C"
{
BOOL WINAPI PrxDllMain(HINSTANCE hInstance, DWORD dwReason,
LPVOID lpReserved);
STDAPI PrxDllCanUnloadNow(void);
STDAPI PrxDllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv);
STDAPI PrxDllRegisterServer(void);
STDAPI PrxDllUnregisterServer(void);
}
Скорее всего, китайская технология Copy-Paste дала сбой.