Тема: Предупреждения о конфликте библиотек

Помогите пожалуйста.
Разбираю пример acuisample из стандартной поставки ObjArx. При компиляции примера ошибок не возникает. Если же сам собираю пример с помощью developer guide, компилятор выдает сообщение.
LINK : warning LNK4098: defaultlib "mfc42.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "mfcs42.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
Значит я неправильно собираю скелет. В Release компилируется без ошибок. Помогите пожалуйста. Ведь "родной" пример то компилируется в debug без ошибок.
icq 19005835

Re: Предупреждения о конфликте библиотек

В help-e к сообщению LNK4098 подробно описано почему такое может происходить. Попробуй перетранслировать все модули(Rebuild All).

Re: Предупреждения о конфликте библиотек

Уважаемый VVV
Rebuild All я делал
Если Rebuild All не делать сообщение исчезает
Весь девелопер гуид перерыл ничего о этой проблеме не нашел.
А я ведь строго следую их инструкциям.

Re: Предупреждения о конфликте библиотек

?Девелопер гуид? по ARX вряд ли содержит описание проблем самого VC++, а это, как мне кажется,  чисто его проблема.

Re: Предупреждения о конфликте библиотек

Уважаемый VVV!
Давайте попробуем разобраться по другому.
Вот кусок кода который глючит.

static void initApp()
{
//theArxDLL.AttachInstance(); этой функции параметра какого-то не хватает я его сразу заремил
CAcModuleResourceOverride resOverride; // это вроде как то что надо и по теме только заремливание его в примере из ObjArx не приводит к появлению ошибки
//а вот addcommand конфликтует:((
acedRegCmds->addCommand(
"ASDK_ACUI_SAMPLE",
"ASDKACUISAMPLE",
"ACUISAMPLE",
ACRX_CMD_MODAL,
dialogCreate,
NULL,
-1,
theArxDLL.ModuleResourceInstance());
}



Перевод "девелопер гуида" полный для этого примера.
(он малюсенький:)

Создать приложение ObjectARX MFC
Скелет программы
1 Создать  новый проект в Microsoft Visual C++ , используя приложение Wizard.
Выбрать тип проекта MFC AppWizard (dll) . Задать имя проекта (для
данного примера мы выбрали имя AsdkAcUiSample) и директорию и кликните
OK. В следующем поле выберите  MFC Extension(расширение) DLL, затем кликните Finish. Мы
получили основной проект MFC Extension( расширение) DLL.
2 Теперь нам надо добавить нужный код для поддержки ObjectARX. Откройте файл
AsdkAcUiSample.cpp . Удалите запрос AFX_EXTENSION_MODULE , а также
функцию DllMain.
3 Добавьте следующее объявление:
AC_IMPLEMENT_EXTENSION_MODULE(theArxDLL);
4 Для настройки комнд AutoCAD и
acrxEntryPoint добавьте код :
void dialogCreate()
{
acutPrintf("\nAcUi Dialog Sample");
}
Обращение addCommand  использует экземпляр модульного ресурса
из макроса AC_IMPLEMENT_EXTENSION_MODULE :
static void initApp()
{
theArxDLL.AttachInstance();
CAcModuleResourceOverride resOverride;
acedRegCmds->addCommand(
"ASDK_ACUI_SAMPLE",
"ASDKACUISAMPLE",
"ACUISAMPLE",
ACRX_CMD_MODAL,
dialogCreate,
NULL,
-1,
theArxDLL.ModuleResourceInstance());
}
Следующая функция unloadApp() запрашивается при разгрузке приложения.
В это время очень важно отсоединить  экземпляр(копию) ресурса:
static void unloadApp()
{
// Сделать здесь другие задачи очистки
acedRegCmds->removeGroup("ASDK_ACUI_SAMPLE");
theArxDLL.DetachInstance();
}
// Точка входа
//
extern "C" AcRx::AppRetCode acrxEntryPoint(
AcRx::AppMsgCode msg, void* appId)
{
switch( msg )
{
case AcRx::kInitAppMsg:
acrxDynamicLinker->unlockApplication(appId);
acrxDynamicLinker->registerAppMDIAware(appId);
initApp();
break;
case AcRx::kUnloadAppMsg:
unloadApp();
break;
case AcRx::kInitDialogMsg:
break;
default:
break;
}
return AcRx::kRetOK;
}
Создайте исходный файл AsdkAcUiSample.h и добавьте следующую строку в
файл:
#include "resource.h" // main symbols
#define PI 3.14159265359
// Предварительное описание функции точки входа нашего
// приложения
void testCreate();
Затем добавьте следующие включаемые файлы AsdkAcUiSample.cpp:
#include "AsdkAcUiSample.h"
#include "AcExtensionModule.h"
Вам также необходимо будет добавить библиотеки ObjectARX к проектным файлам, поменяйте
расширение .dll на .arx, и модифицируйте файл  .def  собственным экспортом.
Теперь Вы должны быть в состоянии скомпилировать и загрузить приложение.

Re: Предупреждения о конфликте библиотек

Не стоит обращать внимание на такие мелочи :)
Если все хочется избавится от warning'a нужно в Projects Settings->Link->Input->Ignore Libraries добавить "msvcrtd.lib".

Re: Предупреждения о конфликте библиотек

Это я уже делал:)
У бирает конфликт только конкретно с этой библиотекой
Но впринципе совет хороший.
Я и хотел узнать мелочи это или нет.
Да и автокад ругается когда такую dll подгружает мол у вас конфликт тут батенька:)

Re: Предупреждения о конфликте библиотек

Если кому-то стало интересно
то ответ прост:)
в файле StdAfx.h
в начале поставить
#ifdef _DEBUG
#define WAS_DEBUG
#undef _DEBUG
#endif

и вконце поставить
#ifdef _DEBUG
#define WAS_DEBUG
#undef _DEBUG
#endif
Но совету Alex следовать надо обязательно
Прав он вобщем.
Всем спасибо, еду дальше:)