TheGrayWolf, мне несколько вещей непонятно:
1. зачем GetCOREInterface() делать френдом, если Core все равно скрыт за абстрактным интерфейсом?
2. по той же причине, зачем делать конструктор приватным?
3. по той же причине, зачем делать деструктор приватным, тем более всегда можно delete ICore ?
4. по той же причине, зачем экспортировать класс Core?
5. ты нас троллишь? )
cranky
just for lulz
Если серьёзно, хочу посмотреть, взлетит - не взлетит...
TheGrayWolf
каждая из приведенных тобой методик использования библиотек классов по-своему хороша, но не все одновременно! используй либо статическое связывание, либо динамическое.
ооо, наркоманский тред.
>> Core * MYSpace::GetCOREInterface() { return new Core(); }
>Красиво
Где-то слышал, что это не по стандарту.
какой интересный вариант реализации шаблон синглтон :)
как говориться закат солнца в ручную.
TheGrayWolf
#pragma comment(linker, "/export:?CreateEngine3D@pbl3d@@YGJAAPAUIEngine3D@1@ABUSENGINE3DCREATEPARAMETERS@1@PAUIEvents@1@@Z=?CreateEngine3D@core@pbl3d@@YGJAAPAUIEngine3D@2@ABUSENGINE3DCREATEPARAMETERS@2@PAUIEvents@2@@Z")
#pragma comment(linker, "/export:CreateEngine3D=?CreateEngine3D@core@pbl3d@@YGJAAPAUIEngine3D@2@ABUSENGINE3DCREATEPARAMETERS@2@PAUIEvents@2@@Z")
namespace pbl3d {
namespace core {
HRESULT WINAPI CreateEngine3D(IEngine3D *&rpqEngine3D, const SENGINE3DCREATEPARAMETERS &rcSCreateParameters, IEvents *pqEvents)
{
....
}
}
}
Экспортируется функция
HRESULT WINAPI CreateEngine3D(IEngine3D *&rpqEngine3D, const SENGINE3DCREATEPARAMETERS &rcSCreateParameters, IEvents *pqEvents) для доступа из C++ через lib.
И функция CreateEngine3D для доступа через LoadLibrary и GetProcAddress

Ребята, го в универ... на переподготовку...
DanQuimby
> какой интересный вариант реализации шаблон синглтон :)
Там не было синглтона, но при желании можно сделать)
asvp
Это ты к чему? У меня экспортируется только GetCOREInterface() без всяких @@YGJAAPAUI,
классы я НЕ ЭКСПОРТИРУЮ, GetCOREInterface() мне даёт указатель на базовый интерфейс, который креатит другие интерфейсы,
как в DX в общем-то, но не КОМ, кажется это у оопэшников фабрикой зовётся, может я не прав.
asvp
> #pragma comment(linker,
> "/export:?CreateEngine3D@pbl3d@@YGJAAPAUIEngine3D@1@ABUSENGINE3DCREATEPARAMETERS@1@PAUIEvents@1@@Z=?CreateEngine3D@core@pbl3d@@YGJAAPAUIEngine3D@2@ABUSENGINE3DCREATEPARAMETERS@2@PAUIEvents@2@@Z")
>
> #pragma comment(linker,
> "/export:CreateEngine3D=?CreateEngine3D@core@pbl3d@@YGJAAPAUIEngine3D@2@ABUSENGINE3DCREATEPARAMETERS@2@PAUIEvents@2@@Z")
Зачот. Можно я это на говнокод запощу?
Это просто какой-то фрактал фейла.
![]()
Тема в архиве.