проблема с Loki
От: zeus_2003 Россия  
Дата: 08.01.06 18:01
Оценка:
вот такой код.
падает на выходе из main
#include "Loki/functor.h"
#include "Loki/typelistmacros.h"
#pragma comment(lib,"loki.lib")
using namespace std;
Loki::Functor<void> tt;
class D
{
public:
    Loki::Functor<void> FTOR;
};
D d;
void f3(Loki::Functor<void> ftor)
{
    d.FTOR=ftor;
}
class C
{
    void f1(int i)
    {
        cout<<i<<endl;
    }
public:
    void f2()
    {
        Loki::Functor<void,LOKI_TYPELIST_1(int)> ftor1(this,&C::f1);
        Loki::Functor<void> ftor2(Loki::BindFirst(ftor1,2));
        f3(ftor2);
    };
};

int main()
{
    C c;
    c.f2();
    d.FTOR();    
    
}

Ругается так: Unhandled exception at 0x0040114a in testConsole.exe: 0xC0000005: Access violation reading location 0xfeeefeee.
у функтора из локи какие-то проблемы с копированием, или я туплю..
Re: проблема с Loki
От: odisseyLM  
Дата: 09.01.06 12:30
Оценка:
Советовал бы тебе написать под чем ты компилишь
Re[2]: проблема с Loki
От: zeus_2003 Россия  
Дата: 09.01.06 14:59
Оценка:
Здравствуйте, odisseyLM, Вы писали:

LM>Советовал бы тебе написать под чем ты компилишь


MSVC 7.1

выпадает в деструкторе auto_ptr в d.FTOR.
если d.FTOR не присваивать передваваемый ftor то все ок...
Re: проблема с Loki
От: ioni Россия  
Дата: 10.01.06 07:45
Оценка:
Здравствуйте, zeus_2003, Вы писали:

_>Ругается так: Unhandled exception at 0x0040114a in testConsole.exe: 0xC0000005: Access violation reading location 0xfeeefeee.

_>у функтора из локи какие-то проблемы с копированием, или я туплю..

вообще то поискать по форуму
но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti
кажется так
Re[2]: проблема с Loki
От: zeus_2003 Россия  
Дата: 10.01.06 18:10
Оценка:
Здравствуйте, ioni, Вы писали:

I>вообще то поискать по форуму

I>но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti
I>кажется так

rtti включен.
по форуму я искал, чето не нашел ниче. подскажите строку поиска, если уже было.
Re[3]: проблема с Loki
От: Vain Россия google.ru
Дата: 10.01.06 19:49
Оценка:
Здравствуйте, zeus_2003, Вы писали:

_>Здравствуйте, odisseyLM, Вы писали:


LM>>Советовал бы тебе написать под чем ты компилишь


_>MSVC 7.1


_>выпадает в деструкторе auto_ptr в d.FTOR.

_>если d.FTOR не присваивать передваваемый ftor то все ок...

А если это убрать:
Loki::Functor<void> ftor2(Loki::BindFirst(ftor1,2));

?

Не помню, но вероятно BindFirst присваивает указателю адрес 2..
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: проблема с Loki
От: Аноним  
Дата: 10.01.06 22:54
Оценка:
Да хреново вообще это юзать. Есть boost, который покруче будет, чем подеие алексадреску, академический интерес? Трахайтесь, какая классная у локи поддержка.
Re[4]: проблема с Loki
От: zeus_2003 Россия  
Дата: 10.01.06 23:51
Оценка:
Здравствуйте, Vain, Вы писали:

V>А если это убрать:

V>
V>Loki::Functor<void> ftor2(Loki::BindFirst(ftor1,2));
V>

V>?

V>Не помню, но вероятно BindFirst присваивает указателю адрес 2..


ну,... если это убрать, то тоже вылетает . в том же месте,
но вобще-то это нужно чтобы можно было вызвать d.FTOR() без указания параметра, который известен на этапе создания функтора.
Re[3]: проблема с Loki
От: ioni Россия  
Дата: 11.01.06 06:11
Оценка:
Здравствуйте, zeus_2003, Вы писали:

_>Здравствуйте, ioni, Вы писали:


I>>вообще то поискать по форуму

I>>но фишка в том что в момент выгрузки менеджера памяти(который используют функторы) отсутствует rtti
I>>кажется так

_>rtti включен.

_>по форуму я искал, чето не нашел ниче. подскажите строку поиска, если уже было.

извини ошибся имелся ввиду runtime а не rtti
и падало в момент завершения приложения
а как у тебя?

если нечего не помогает тогда отладчик в руки и вперед
Re[4]: проблема с Loki
От: ioni Россия  
Дата: 11.01.06 06:16
Оценка:
да еще в догонку
важно что бы библиотека и приложение имели одну и туже модель рантайма
Re[4]: проблема с Loki
От: zeus_2003 Россия  
Дата: 11.01.06 21:46
Оценка:
Здравствуйте, ioni, Вы писали:

I>извини ошибся имелся ввиду runtime а не rtti

I>и падало в момент завершения приложения
I>а как у тебя?
I>если нечего не помогает тогда отладчик в руки и вперед

именно так и падает в момент завершения приложения.
ты имеешь в виду что С runtime library для loki.lib и exe-шника используются разные?
если, да, то вместо #pragma comment бла-бла-бла,можно непосредственно cскомпилить src-файлы, добавив их в проект(там всвего 2 штуки: SmallObject.cpp и singleton.cpp), т.е. Runtime Lib для них будет использоваться указанный в настройках проекта(по умолчанию для Debug это SingleThread Debug).
но вообще это ниче не меняет, :+() Вообще как-то это странно и чувствую связано с кривизной рук +). моих, потому как параллельно использую схожий код в другом месте(в DLL) и там все работает.а эта тестовая программка никак не хочет +).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.