Здравствуйте, Аноним, Вы писали:
А>Слышал я, что dll может экспортировать классы, у меня есть свой класс, скажите, каким образом это сделать? Как экспортировать класс из длл?
А>Слышал я, что dll может экспортировать классы, у меня есть свой класс, скажите, каким образом это сделать? Как экспортировать класс из длл?
Как и функции:
class __declspec(dllexport) TMyClass
{
};
__declspec(dllimport) соответственно при импорте.
Единственное "но" — видно будет только в приложении, скомпилированном тем же компилятором.
Ну, и там, никаких наследований от VCL-компонентов, конечно же (вернее можно только формы создавать, там проблема с Parent имеется)
Здравствуйте, Сергей Савостин, Вы писали:
А>>Слышал я, что dll может экспортировать классы, у меня есть свой класс, скажите, каким образом это сделать? Как экспортировать класс из длл? СС>Как и функции:
СС>
СС>__declspec(dllimport) соответственно при импорте. СС>Единственное "но" — видно будет только в приложении, скомпилированном тем же компилятором. СС>Ну, и там, никаких наследований от VCL-компонентов, конечно же (вернее можно только формы создавать, там проблема с Parent имеется)
Путь граблей в темной комнате. Не нужно этого делать. Если уж очень хочется — BPL в руки.
Здравствуйте, DarkMaster, Вы писали:
DM>Здравствуйте, Nemando, Вы писали:
N>>"Если уж очень хочется — BPL в руки" N>>а почему бы не воспользоваться Com-технологией?
DM>Этому тоже ничего не мешает — bpl приведен как один из стандартных вариантов, предлагаемых самим производителем.
Согласен, но только если не придется использовать потом данный класс на Visual Studio или еще чем то (не Borland)
Здравствуйте, Nemando, Вы писали:
N>Здравствуйте, DarkMaster, Вы писали:
DM>>Здравствуйте, Nemando, Вы писали:
N>>>"Если уж очень хочется — BPL в руки" N>>>а почему бы не воспользоваться Com-технологией?
DM>>Этому тоже ничего не мешает — bpl приведен как один из стандартных вариантов, предлагаемых самим производителем.
N>Согласен, но только если не придется использовать потом данный класс на Visual Studio или еще чем то (не Borland)
Класс из dll можно экспортировать только если dll и exe скомпилированы одним и те же компилятором.
Причем крайне желательно одной и той же версией.
Здравствуйте, BlackEric, Вы писали:
BE>Здравствуйте, Nemando, Вы писали:
N>>Здравствуйте, DarkMaster, Вы писали:
DM>>>Здравствуйте, Nemando, Вы писали:
N>>>>"Если уж очень хочется — BPL в руки" N>>>>а почему бы не воспользоваться Com-технологией?
DM>>>Этому тоже ничего не мешает — bpl приведен как один из стандартных вариантов, предлагаемых самим производителем.
N>>Согласен, но только если не придется использовать потом данный класс на Visual Studio или еще чем то (не Borland)
BE>Класс из dll можно экспортировать только если dll и exe скомпилированы одним и те же компилятором. BE>Причем крайне желательно одной и той же версией.
Я и планирую использовать данную длл только там, где и писалась программа! Кстати, код приведен на
языке с++, а можете показать как он выглядит на Object Pascal?
Здравствуйте, BlackEric, Вы писали:
N>>Согласен, но только если не придется использовать потом данный класс на Visual Studio или еще чем то (не Borland)
BE>Класс из dll можно экспортировать только если dll и exe скомпилированы одним и те же компилятором. BE>Причем крайне желательно одной и той же версией.
Дернуть метод созданного в длл класса может и удастся (основываемся на том, что таблицы методов у нас идентичны), а вот при создании-разрушении уже будет кучка спецэффектов т.к. менеджеры памяти у нас разные. Малейшие поползновения в сторону чего-либо (ну например в длл использовали несколько другой класс или переставили методы местами в классе) — опять будут грабли. Однозначно — это путь ситхов
Здравствуйте, BlackEric, Вы писали:
BE>Класс из dll можно экспортировать только если dll и exe скомпилированы одним и те же компилятором. BE>Причем крайне желательно одной и той же версией.
Я говорил не просто о dll, а о dll, содержащих com-класс, одно из преимуществ com-технологии — возможность использовать классы, под другим компилятором!
Наслаждайтесь: developing.ru > технология COM, прочтите, а потом попробуйте повторить то, что Вы сказали
Re[8]: Экспорт класса
От:
Аноним
Дата:
19.10.10 20:40
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Я и планирую использовать данную длл только там, где и писалась программа! Кстати, код приведен на А>языке с++, а можете показать как он выглядит на Object Pascal?
Если память не изменяет, в Delphi так и не разрешили экспорт классов.
Здравствуйте, Nemando, Вы писали:
N>Здравствуйте, DarkMaster, Вы писали:
DM>>Здравствуйте, Nemando, Вы писали:
N>>>"Если уж очень хочется — BPL в руки" N>>>а почему бы не воспользоваться Com-технологией?
DM>>Этому тоже ничего не мешает — bpl приведен как один из стандартных вариантов, предлагаемых самим производителем. N>Согласен, но только если не придется использовать потом данный класс на Visual Studio или еще чем то (не Borland)
не получится потом еще где-то использовать — только на том-же компиляторе и, скорее всего, той-же версии