Тема: Почему не загружаются некоторые ARX в AutoCAD 2007?

Есть у меня 2-а ARX-а.
1) A.ARX
2) B.ARX
B.ARX зависит от A.ARX.
Если смотреть утилитой depends.exe, то B.arx зависит от тех же dll что и A.ARX, !отличие только в том, что B.arx еще зависит от A.ARX!
Есть загрузочный ARX Loader.ARX,
в котором я делаю следующее:
{
acrxLoadModule("A.ARX");
acrxLoadModule("B.ARX");
}
Сам Loader.ARX грузится.
A.ARX - загружается успешно
B.ARX - не загружается...
Выдается следующее:
B.arx cannot find a dll or other file
that it needs.
AcRxDynamicLinker failed to load 'B.arx'
C:\AutoCAD\AutoCAD 2007\acad.exe Unable to load B.arx file.
Т.е. если arx зависит от другого, то почему то он не хочет грузиться... Почему это может быть? В 2005-й студии у проекта B стоит dependens от проекта A.
Открываю appload: Loader.arx и A.arx там загружены, а B.arx все равно прогрузить не удается даже appload-ом.
Кто с таким сталкивался? Как можно определить чего не хватает arx-у? (Еще раз говорю что посмотрел зависимости этих двух arx-ов и отличие только в том, что B зависит от A).

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Проверил.
Убираю зависимость B.ARX от A.ARX - грузится. Ставлю зависимость не грузится... :(

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

> KonstantinM
А не пробовал делать delayload?

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

P.S.: Какая версия AutoCAD?

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Упс. Только сейчас заметил, что 2007. А почему тогда: acrxLoadModule("A.ARX") а не acrxLoadModule(_T("A.ARX")) ?
Только что проверил у себя с delayload. arx-файл зависящий от dbx-файла загружается даже при незагруженном dbx, а затем в On_kInitAppMsg сам его загружает и потом к нему обращается:

TCHAR ModuleName[_MAX_PATH+1];
GetModuleFileName(_hdllInstance,ModuleName,_MAX_PATH);
TCHAR PathDBX[2*_MAX_PATH+1]; memset(PathDBX,_T('\0'),2*_MAX_PATH+1);
TCHAR *send = 0;
if ((send = _tcsrchr(ModuleName,_T('\\'))) != NULL) {
   _tcsncpy(PathDBX,ModuleName,send-ModuleName+1);
   _tcscat(PathDBX,_T("DoubleCircleEnt.dbx"));
} else if ((send = _tcsrchr(ModuleName,_T('/'))) != NULL) {
   _tcsncpy(PathDBX,ModuleName,send-ModuleName+1);
   _tcscat(PathDBX,_T("DoubleCircleEnt.dbx"));
} else {
   _tcscpy(PathDBX,_T("DoubleCircleEnt.dbx"));
}
if (!acrxLoadModule(PathDBX, true))  return AcRx::kRetError;

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

-----
Упс. Только сейчас заметил, что 2007. А почему тогда: acrxLoadModule("A.ARX") а не acrxLoadModule(_T("A.ARX")) ?
-----
Все делаю правильно (_T("A.ARX")) - просто написал "абстрактно".
Что сие есть delayload? Тот же самый код по 2004/2006 работает без проблем и все грузится и все dll находятся...
Т.е. я просто переделал свои arx под 2007 (перевел строчки на ACHAR, поменял .lib c 16 на 17 и !все!). Все компайлится и собирается. В 2006 все работает, в 2007 грузить отказывается если есть зависимость arx от arx... Или есть в Acad какая переменная окружения delayload? Которая в 2006 по умолчанию true, а в 2007 false???
Т.е. прикол в том, что когда я гружу B.arx, A.arx УЖЕ загружена.

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Если имеется ввиду \delayload a.arx как опция проекта, то это от лукавого... не хочу это юзать... чтоб потом руками грузить что мне надо. У меня 10-arx-ов, которые выстроены в иерархию и я задолбаюсь для каждого проекта делать \delayload и потом руками для каждого грузить то что необходимо...
Есть 2-dll A.ARX, B.ARX
Хочу сделать загрузку последавательно как:
acrxLoadModule(_T("A.ARX"));
acrxLoadModule(_T("B.ARX"));
Т.е. на момент загрузки B, A уже должно быть загружено... так оно и было ранее и все работало, а теперь (в 2007) матюгается... (хотя A так же успешно загружена на момент попытки загрузки B)...
Из A экспортируется !один! метод, который нужен в B (может что-то поменялось и экспортировать надо как-нибудь по особенному не так как раньше?). Хотя depends.exe - показывает что этот метод удачно торчит наружу...

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Если надо могу прислать код теста (2002/2004-6/2007)
Там 5 строчек кода, а эффект на лицо... может у меня акад 2007 глючный... что еще может быть не знаю...

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

> KonstantinM
Пришли проект - посмотрю.

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

В vs2005 надо манифесты проверить. Достаточно часто под дебагом не находится нужный рантайм. Хотя опять варианты могут быть. Так что и опции проекта смотреть надо.

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Вопрос закрыт. Проблема была в том, что B.ARX ссылался на A.DLL, а не A.ARX. К этому приводила строка в .DEF файле

LIBRARY      "A"

Удаление ее устраняет ошибку.

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

VS 2005 в *.def файле находя строку
LIBRARY "A"
, автоматом добавляла расширение .dll.
VS 6.0 и VS 2002 - добавляли расширение проекта (ARX).
Правится это тем что из DEF файла выкидывается строка LIBRARY (если есть), либо указывается име явно с расширением - LIBRARY "A.ARX"

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Поэтому я проекты визардом делаю. Он все прописывает явно.

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

Я тоже делал A и B Wizardom :)... правда старым от ObjectARX 2002...

Re: Почему не загружаются некоторые ARX в AutoCAD 2007?

> KonstantinM
Да, это я ошибся. Старый прописывал просто имя. А новый вообще ничего не пишет - нету строки library.