Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 2 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 01.07.09
Prihlásený: 03.07.09
Príspevky: 1
Témy: 1
Príspevok NapísalOffline : 01.07.2009 22:06

zdravým všetkých.
v c++ pracujem len druhý den. a po napísaní mojho DLL sa mi vyslitla neznáma chyba.
dll mi normálne funguje. masku môžem vytvoriť, nastaviť jej obsah. následne ho načítať. potom uložiť , aj načítať.
problém nastáva vtedy ked vypnem program ktorý dll používa. po vypnutí sa shrúti .
týmto prsím niekoho ochotného. či by mi mohol spraviť kolektúru celého kódu. podla mna je jednoduchšie ako písať tu čo všetko mám zle. takisto netuším ako spraviť deinicializáciu dll.

každému som vopred vďačný.
(kódované v devc++)
zdroják:
Kód:
// C/C++
#define export extern "C" __declspec (dllexport)
#include <windows.h>
#include <vector>
#include <fstream>
#include <stdio.h>

using namespace std;

class MASK
{
      private:
              int width;
              int height;
              vector< vector<char> > pole;
      public :
      MASK(){}
      MASK(int w, int h)
      {
             width=w;
             height=h;
             pole.resize(w);
             for (int i; i<w;i++)
             {
                 pole[i].resize(h);
             }
             for (int i=0;i<w;i++)
             {
                 for (int e=0;e<h;e++)
                 {
                     pole[i][e]=false;
                 }
             }
      }
       
      void set_element(int w, int h,char value)
      {
          pole[w][h]=value;
      }
       
      char get_element(int w, int h)
      {
          return (pole[w][h]);
      }
      int get_width()
      {
          return (width);
      }
      int get_height()
      {
          return (height);
      }
      int empty()
      {
          for (int i; i<width;i++)
          {
              pole[i].empty();
          }
          pole.empty();
      }
};

vector< MASK *>  zoznam_mask;
int last_mask;
export double init()
{
       last_mask=1;
}

export double create_mask(double w, double h)
{
       zoznam_mask.resize(zoznam_mask.size()+1);
       zoznam_mask[zoznam_mask.size()]= new MASK((int)w,(int)h);
       return (zoznam_mask.size());
}
export double mask_set_element(double id, double w, double h,double value)
{
       zoznam_mask[(int)id]->set_element( (int)w, (int)h, (int)value);
}

export double mask_get_element(double id, double w, double h)
{       
       return (zoznam_mask[(int)id]->get_element( (int)w, (int)h));
}

export double mask_save(double id,char *fname)
{
          MASK * ukMask = zoznam_mask[(int)id];
          FILE *fsave;
          int w = ukMask->get_width();
          int h = ukMask->get_height();
          long buff_size=w*h+(sizeof(int)*2);
          char buffer[buff_size];
           
          fsave = fopen(fname, "wb");
          setbuf(fsave,buffer);
          if (!fsave) {fclose(fsave); return (-1);}
          fwrite(&w,sizeof(int),1,fsave);
          fwrite(&h,sizeof(int),1,fsave);
          for (int i=0;i<w;i++)
          {
              for (int e=0;e<h;e++)
              {
                  if (ftell(fsave)>buff_size) {fclose(fsave); return (-2);}
                  char value=ukMask->get_element(i,e);
                  fwrite(&value,sizeof(char),1,fsave);
              }
          }
          fflush(fsave);
          fclose(fsave);
          return (true);
}

export double mask_load(char *fname)
{
           
          FILE *fload;
          fload = fopen(fname, "rb");
          int w ;
          int h ;
           
          if (!fload) {fclose(fload); return (-1);}
          fread(&w,sizeof(int),1,fload);
          fread(&h,sizeof(int),1,fload);
          MASK * ukMask = new MASK(w,h);
          zoznam_mask.resize(zoznam_mask.size()+1);
          zoznam_mask[zoznam_mask.size()] = ukMask;

          for (int i=0;i<w;i++)
          {
              for (int e=0;e<h;e++)
              {
                  char value;
                  fread(&value,sizeof(char),1,fload);
                  ukMask->set_element( i, e, value);
              }
          }
          fclose(fload);

          return (zoznam_mask.size());//zoznam_mask.size()
}

export double mask_delete(double id)
{
       zoznam_mask[(int)id]->empty();
       delete(zoznam_mask[(int)id]);
}

ešte by som doplnil, že do dll môžem odoslať premenné len typu double a char .


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 10.07.09
Prihlásený: 14.01.13
Príspevky: 28
Témy: 3
Príspevok NapísalOffline : 13.07.2009 19:58

Pravdepodobe chyba bude pri funkcii mask_delete. Po prve, metoda empty len vrati, ci je vector prazdny, alebo nie. A pred uvolnovanim pamate "delete" by bolo dobre skontrolovat, ci taky elemt existuje. Asi by som to riesil takto:

Kód:
export double mask_delete(double id)
{
       if (!zoznam_mask[(int)id]->empty() && zoznam_mask.size() > (int)id && zoznam_mask[(int)id] != null)
            delete(zoznam_mask[(int)id]);
}


Odpovedať na tému [ Príspevkov: 2 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Chyba 101 (net::ERR_CONNECTION_RESET): Neznáma chyba.

v Sieťové a internetové programy

0

2812

26.02.2011 11:36

000kiko000 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Neznáma chyba

v HTML, XHTML, XML, CSS

3

387

30.07.2012 19:53

Alastor Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. neznama chyba

v PHP, ASP

2

468

29.11.2007 20:37

tatysp Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. neznama chyba

v Ostatné

14

241

16.02.2024 12:59

pcamater Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. avast- neznama chyba

v Antivíry a antispywary

2

550

06.09.2007 17:10

Marx911 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Neznáma chyba GOOGLE EARTH

v Ostatné programy

0

358

15.03.2017 12:37

DavidB Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. externe DTD - neznama chyba

v HTML, XHTML, XML, CSS

3

637

23.05.2007 17:35

imcold Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. neznáma chyba v poli

v PHP, ASP

7

527

14.05.2010 15:09

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Validácia stránky, neznáma chyba

v HTML, XHTML, XML, CSS

18

985

05.01.2010 18:17

Unlink Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. BIND & NAMED - neznáma chyba ??

v Operačné systémy Unix a Linux

3

533

08.12.2009 21:36

Filipyno Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Slovanet - pomalý net - neznáma chyba

v Poskytovatelia internetu

7

795

30.06.2015 8:40

shiro Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - GetConsoleWndHandle Chyba

v Assembler, C, C++, Pascal, Java

4

244

05.03.2014 8:58

Xperience Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - chyba v syntaxe

v Assembler, C, C++, Pascal, Java

18

1013

17.12.2008 19:57

gnk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. stop c 0000221 chyba

v Operačné systémy Microsoft

5

263

19.11.2016 21:02

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba - MS Visual C++

v Antivíry a antispywary

6

737

13.10.2009 20:42

citizen Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chyba Microsoft visual C++ 2008

v Ostatné programy

4

1061

19.11.2010 0:29

sync2 Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra