Тема: Как получить объект в custom object?

Имеется некий custom object. В нем хранится Id другого
объекта (тоже custom object). При возникновении
какого-то события (например, moveGripPointsAt  и др.), мне надо
получить данные второго объекта, пересчитать и изменить
соответственно объект.
Вроде все просто, имея Id. Однако линкер упорно сообщает
что незнаком с таким объектом, несмотря на ссылки.
Кто-то встречался с подобной проблемой?
(Решение без реактора)
Спасибо

Re: Как получить объект в custom object?

> BS
Что значит линкёр не знаком с таким объектом? Какой линкёр?

Re: Как получить объект в custom object?

Проверь правильно ли включена *.h другого объекта.
Другой custom объект в том же ARX\DBX модуле или нет?
Если нет - то в насройки проекта подключи *lib того ARX\DBX в котором находится другой объект.

Re: Как получить объект в custom object?

*.lib подключен. *.h тоже, но хедере
объекта я его перетащил с полным указанием
пути в конец *.h файла. Сейчас линкер выдает
очень даже справедливое замечание:
"Warning C4005: 'DLLIMPEXP' macro redefinition
See previous definition of 'DLLIMPEXP'
Это на самом деле так. В обоих *.h есть это
определение. Вставить ifndef наверное только запутает.

Re: Как получить объект в custom object?

> BS
Вообще-то это не линкер выдает, а компилятор. smile Если дальше нормално компилируется и линкуется - то можешь не обращать внимания, хотя лучше это сделать аккуратненько с использованием #ifdef DLLIMPEXP

Re: Как получить объект в custom object?

Спасибо. Все o'k.
А если скомпилировать оба объекта вместе,
(т.е. получаем один *.dbx file) то познакомить
их надо через *.lib?
Что-то у меня не получается....

Re: Как получить объект в custom object?

> BS
#ifndef DLLMYIMPEXP
#ifdef _DBX_NAME_MACRO_
#define DLLMYIMPEXP __declspec(dllexport)
#else
#define DLLMYIMPEXP __declspec(dllimport)
#endif
#endif
Надо в dbx/arx настройках проекта где делаешь объекты вставить в Preprocessor definition _DBX_NAME_MACRO_.
Все! Все классы внутри одной dll-ки должны быть видны друг другу без всяких подключений *.lib.
И еще. Лучше свои arx/dbx-ы связывать не через подключение .lib, а делать вспомогательный проект workspace - туда включить проекты своих arx/dbx-ов и провязать их через Dependencies. Тогда все будет корректно компиляца под разными конфигурациями (Release, Debug). Включая .lib Вы рискуете что при компиляции Release .lib не будет найден т.к. находился в Debug, еще хуже если будет найден (не удалили Debug при перестройке). При желании вы всегда можете перекомпилять все хозяйство целиком...