В "Поиске" уже смотрел... вроде на мою ошибку не похоже...
может быть, конечно, эта тема не совсем для ветки MFC...
А пишет мне Visual Studio 6.0 вот такую бяку:
Linking...
Creating library ReleaseUMinDependency/Modbus_Side.lib and object ReleaseUMinDependency/Modbus_Side.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseUMinDependency/Modbus_Side.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Modbus_Side.dll - 2 error(s), 0 warning(s)
Знающие люди говорят, что ошибка может связана с этой функцией
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
Визуал студио генерит такую кучу файлов, что я в половину даже не заглядываю,
но нашел в файлах проги следующий текст:
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/)
{
if (dwReason == DLL_PROCESS_ATTACH)
{
_Module.Init(ObjectMap, hInstance, &LIBID_MODBUS_SIDELib);
DisableThreadLibraryCalls(hInstance);
}
else if (dwReason == DLL_PROCESS_DETACH)
_Module.Term();
return TRUE; // ok
}
Код этот сгенерен автоматически... я вообще не знал о его существовании... и привык считать, что автомат не ошибается...
Может быть, есть смысл поменять
WINAPI на
APIENTRY ???
03.07.07 10:32: Перенесено модератором из 'MFC' — SchweinDeBurg
Здравствуйте, Ivanalt, Вы писали:
Пишете вы явно не на MFC, а на ATL. Вопрос скорее в соотв. форум по ATL.
Вариантов тут много, вы дали слишком мало информации. Возможно у вас определен _ATL_MIN_CRT и в то же время вы пытаетесь обратиться к функции CRT.
Название конфигурации у вас соответствующее: ReleaseUMinDependency, что наводит на мысли об определенном _ATL_MIN_CRT.
Если уберете _ATL_MIN_CRT и оно заработает, то либо так и сделайте, либо ищите что именно из CRT вы используете и откажитесь от этого/перепишите без CRT.
здесь
здесь
Здравствуйте, febus, Вы писали:
F>Если уберете _ATL_MIN_CRT и оно заработает, то либо так и сделайте, либо ищите что именно из CRT вы используете и откажитесь от этого/перепишите без CRT.
Откуда его надо убрать??? Поиск внутри программы ничего не дает:
Searching for '_ATL_MIN_CRT'...
Cannot find the string '_ATL_MIN_CRT'.
Searching for 'CRT'...
Cannot find the string 'CRT'.
И может ли кто-нибудь из админов переместить эту тему в ветку по ATL???
Здравствуйте, Ivanalt, Вы писали:
I>Project->Settings->C++->Preprocessor: удаляем из списка _ATL_MIN_CRT
I>И в результате получаем: Modbus_Side.dll — 0 error(s), 0 warning(s)
I>главное, чтоб без него всё работало...)))
Я бы все же на вашем месте попытался выяснить, что именно из CRT используется. С высокой вероятностью это будет фунцкия strcmp,
которая прекрасно заменяется на API функцию lstrcmp.
Все жe на ATL/WTL пишете. А раз так, то вопрос размера программы вас должен интересовать

Поставьте упонянутую линкером библиотеку libcmt.lib в строку Ignore Libraries в конфигурации проекта. Тогда он начнет ругаться названиями функций, которые
вы используете из CRT. Дальше поиск по проекту этих функций и замена на их API аналоги(если это конечно возможно).
To find out what is causing the problem, do one of the following:
• Open the Project Settings dialog box, select the Link tab, and click Input in the Category box. Type LIBCMT.LIB in the Ignore libraries text box. Now do a build. You will get a list of unresolved externals. This list contains the CRT routines you are using. Look for the routines that you think may require the startup code.
• Turn on the /VERBOSE linker option. From the resulting linker output, you can find a list of routines that require the CRT startup code.