LNK2005 _DllMain@12 already defined
От: user_20060712  
Дата: 12.07.06 05:35
Оценка:
Всем добрый день!

Компилирую 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

Кто-нибудь может подсказать, как побороть эту ошибку?

Заранее спасибо ответившим.
Re: LNK2005 _DllMain@12 already defined
От: ArtDenis Россия  
Дата: 12.07.06 07:46
Оценка:
user_20060712 пишет:
> Кто-нибудь может подсказать, как побороть эту ошибку?

Гугль может:

http://www.google.ru/search?q=error+LNK2005+_DllMain
Posted via RSDN NNTP Server 2.0
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[2]: LNK2005 _DllMain@12 already defined
От: user_20060712  
Дата: 13.07.06 06:53
Оценка:
Здравствуйте, 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 дала сбой.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.