ďťż
 
=?iso-8859-2?q?Problem_z_redefinicjami_makr_i_wielko=B6ci_w_f unkcji_C_dla_Postgresa?= ďťż
 
=?iso-8859-2?q?Problem_z_redefinicjami_makr_i_wielko=B6ci_w_f unkcji_C_dla_Postgresa?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

=?iso-8859-2?q?Problem_z_redefinicjami_makr_i_wielko=B6ci_w_f unkcji_C_dla_Postgresa?=



MaciekGrygorcewicz@gmail.com - 27-09-2007 00:09
=?iso-8859-2?q?Problem_z_redefinicjami_makr_i_wielko=B6ci_w_f unkcji_C_dla_Postgresa?=
  Witam

Piszę funkcję w C do Postgresa w Borland Builderze 6. Funkcja wygląda
tak: bytea* funkcja(bytea*,..,..)
Mam poważny problem z plikami nagłówkowymi postgres.h i kolejnymi.
Włączane pliki wielokrotnie definiują mi te same wielkości , co
powoduje mi błąd kompilatora.
Tych plików nagłówkowych jest z 50 i trudno jest znaleźć które co
włączają.
To jest początek mojego pliku:
#include<stdio.h>
#include "postgres.h"
#include<setjmp>
#include"jpeglib.h"
#include "jerror.h"
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

Czy można to jakoś obejsć , bo postgres.h musi byc włączony do projektu





=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 30-09-2007 00:00
=?iso-8859-2?q?Re:_Problem_z_redefinicjami_makr_i_wielko=B6ci _w_funkcji_C_dla_Postgresa?=
  On 26 Wrz, 13:43, MaciekGrygorcew...@gmail.com wrote:
> Witam
>
> Piszę funkcję w C do Postgresa w Borland Builderze 6. Funkcja wygląda
> tak: bytea* funkcja(bytea*,..,..)
> Mam poważny problem z plikami nagłówkowymi postgres.h i kolejnymi.
> Włączane pliki wielokrotnie definiują mi te same wielkości , co
> powoduje mi błąd kompilatora.
> Tych plików nagłówkowych jest z 50 i trudno jest znaleźć które co
> włączają.

troche dziwne, zwazywszy ze wszystkie pliki naglowkowe maja
standardowo

POCZATEK
#ifndef POSTGRES_H
#define POSTGRES_H
... .tutaj definicje itd itp...
#endif /* POSTGRES_H */
KONIEC

mozesz podac przyklad konkretnego bledu?

> To jest początek mojego pliku:
> #include<stdio.h>
> #include "postgres.h"
> #include<setjmp>
> #include"jpeglib.h"
> #include "jerror.h"
> #include "fmgr.h"
> #ifdef PG_MODULE_MAGIC
> PG_MODULE_MAGIC;
> #endif
>
> Czy można to jakoś obejsć , bo postgres.h musi byc włączony do projektu

mozesz podac konkretny przyklad bledu jaki dostajesz?




MaciekGrygorcewicz@gmail.com - 02-10-2007 00:01
=?iso-8859-2?q?Re:_Problem_z_redefinicjami_makr_i_wielko=B6ci _w_funkcji_C_dla_Postgresa?=
  On 29 Wrz, 11:44, Filip Rembiałkowski <plk.zu...@gmail.com> wrote:
> On 26 Wrz, 13:43, MaciekGrygorcew...@gmail.com wrote:
>
> > Witam
>
> > Piszę funkcję w C do Postgresa w Borland Builderze 6. Funkcja wygląda
> > tak: bytea* funkcja(bytea*,..,..)
> > Mam poważny problem z plikami nagłówkowymi postgres.h i kolejnymi.
> > Włączane pliki wielokrotnie definiują mi te same wielkości , co
> > powoduje mi błąd kompilatora.
> > Tych plików nagłówkowych jest z 50 i trudno jest znaleźć które co
> > włączają.
>
> troche dziwne, zwazywszy ze wszystkie pliki naglowkowe maja
> standardowo
>
> POCZATEK
> #ifndef POSTGRES_H
> #define POSTGRES_H
> ... .tutaj definicje itd itp...
> #endif /* POSTGRES_H */
> KONIEC
>
> mozesz podac przyklad konkretnego bledu?
>
> > To jest początek mojego pliku:
> > #include<stdio.h>
> > #include "postgres.h"
> > #include<setjmp>
> > #include"jpeglib.h"
> > #include "jerror.h"
> > #include "fmgr.h"
> > #ifdef PG_MODULE_MAGIC
> > PG_MODULE_MAGIC;
> > #endif
>
> > Czy można to jakoś obejsć , bo postgres.h musi byc włączony do projektu
>
> mozesz podac konkretny przyklad bledu jaki dostajesz?

Ok już ten problem nie istnieje - napociłem się poznajdywałem który co
włącza i otoczyłem ifndef - nie wszystkie miały taki warunek..

Ale teraz jest inny problem.. program się kompiluje , ale linker
wywala następujące błędy:
"[C++ Warning] wspiapi.h(786): W8060 Possibly incorrect assignment
[C++ Warning] jcdctmgr.c(212): W8004 'elemptr' is assigned a value
that is never used
[C++ Warning] jcdctmgr.c(302): W8004 'elemptr' is assigned a value
that is never used
[C++ Warning] jcparam.c(606): W8004 'scanptr' is assigned a value
that is never used
[C++ Warning] jdmarker.c(1195): W8004 'action' is assigned a value
that is never used
[C++ Warning] jdsample.c(331): W8004 'outptr' is assigned a value
that is never used
[C++ Warning] jdsample.c(387): W8004 'outptr' is assigned a value
that is never used
[C++ Warning] jmemmgr.c(1044): W8008 Condition is always false
[C++ Warning] jmemmgr.c(1045): W8066 Unreachable code
[Linker Error] Unresolved external '_CurrentMemoryContext'
referenced from E:\PROGRAMOWANIE\C++ BUILDER 6.0\PROJECTS
\RESIZEAGAINDLLCPP\UNIT1.OBJ
[Linker Error] Unresolved external
'MemoryContextAlloc(MemoryContextData *, unsigned int)' referenced
from E:\PROGRAMOWANIE\C++ BUILDER 6.0\PROJECTS\RESIZEAGAINDLLCPP
\UNIT1.OBJ
"
I co ciekawe że z linkerem jest tak że czasami linkuje a czasem
nie!!!!! Naprawdę i nie mam pojęcia od czego to zależy.
Szukałem w necie wszelkich możliwych przyczyn , ale nie ma.
Nadmienie że bibliotekę jpeg właczam do projektu ze źródeł (po prostu
wszystkie potrzebne pliki c i h) bo dll od jpegliba nie działa.
Projekt stworzyłem jako DLL wizard i zaznaczyłem C++ style.
Podaję cały kod programu (głównego pliku z którego ma być dll) :
#include "postgres.h"
#include<stdio.h>
#include<stdlib.h>
#include <basetsd.h>
#include <windows.h>
#include<locale.h>
#include<setjmp>
#include"jpeglib.h"
#include "jerror.h"
#include "fmgr.h"
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif

//---------------------------------------------------------------------------
// Important note about DLL memory management when your DLL uses the
// static version of the RunTime Library:
//
// If your DLL exports any functions that pass String objects (or
structs/
// classes containing nested Strings) as parameter or function
results,
// you will need to add the library MEMMGR.LIB to both the DLL
project and
// any other projects that use the DLL. You will also need to use
MEMMGR.LIB
// if any other projects which use the DLL will be performing new or
delete
// operations on any non-TObject-derived classes which are exported
from the
// DLL. Adding MEMMGR.LIB to your project will change the DLL and
its calling
// EXE's to use the BORLNDMM.DLL as their memory manager. In these
cases,
// the file BORLNDMM.DLL should be deployed along with your DLL.
//
// To avoid using BORLNDMM.DLL, pass string information using "char
*" or
// ShortString parameters.
//
// If your DLL uses the dynamic version of the RTL, you do not need
to
// explicitly add MEMMGR.LIB as this will be done implicitly for you
//---------------------------------------------------------------------------

extern "C" __declspec(dllexport) bytea* kompresuj(bytea* obrazek,int
zdjwyj_sz, int zdjwyj_w,int stkompr, bool domyslne, J_DCT_METHOD
metodadctbmp,int wspskalibmp, boolean blokwygl, J_COLOR_SPACE
tabkolorbmp, boolean kwantkolorbmp,int wymilosckolbmp,boolean
drprzebkwantbmp,J_DITHER_MODE metodawyglbmp, J_COLOR_SPACE
tabkolor,J_DCT_METHOD metodadctjpg,int wygladzjpg,int wspskalijak);

#pragma argsused

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*
lpReserved)
{
return 1;
}
struct my_error_mgr {
struct jpeg_error_mgr pub;
jmp_buf setjmp_buffer;
};
typedef struct my_error_mgr *my_error_ptr;
void my_error_exit(j_common_ptr cinfo)
{
my_error_ptr myerr = (my_error_ptr) cinfo->err;
(*cinfo->err->output_message) (cinfo);
longjmp(myerr->setjmp_buffer, 1);
}

int czytajwymiarywej(char *filename,int wymiary[])
{ struct jpeg_decompress_struct cinfo;
struct my_error_mgr jerr;
FILE *infile;

if ((infile = fopen(filename, "rb")) == NULL) {
return -1;
}

jerr.pub.error_exit = my_error_exit;
cinfo.err = jpeg_std_error(&jerr.pub);
jpeg_CreateDecompress(&cinfo,JPEG_LIB_VERSION,
(size_t)sizeof(cinfo));
if (setjmp(jerr.setjmp_buffer)) {
jpeg_destroy_decompress(&cinfo);
fclose(infile);
return -2;
}

jpeg_stdio_src(&cinfo, infile);
(void) jpeg_read_header(&cinfo, TRUE);
wymiary[0] = cinfo.image_width;
wymiary[1] = cinfo.image_height;
jpeg_destroy_decompress(&cinfo);
return 0;
}
int read_jpeg(j_decompress_ptr cinfoptr, unsigned char
**image_buffer,int *image_width, int *image_height)
{ JSAMPARRAY jpeg_buffer;
long int i_buffer, i_image;
(void) jpeg_start_decompress(cinfoptr);
*image_buffer = (unsigned char *) palloc(*image_width *
*image_height * (*cinfoptr).out_color_components* sizeof(unsigned
char));
if (*image_buffer == NULL) {
(void) jpeg_finish_decompress(cinfoptr);
jpeg_destroy_decompress(cinfoptr);
return -3;
}
jpeg_buffer = (*(*cinfoptr).mem->alloc_sarray)((j_common_ptr)
cinfoptr, JPOOL_IMAGE,(*cinfoptr).output_width *
(*cinfoptr).output_components, 1);
i_image = 0;
while ((*cinfoptr).output_scanline <
(*cinfoptr).output_height) {
(void) jpeg_read_scanlines(cinfoptr, jpeg_buffer, 1);
if ((*cinfoptr).output_components == 3) {
for (i_buffer = 0; (unsigned)i_buffer <
(*cinfoptr).output_width * (*cinfoptr).output_components; i_buffer++,
i_image++)
(*image_buffer)[i_image] = jpeg_buffer[0]
[i_buffer];
}
}
(void) jpeg_finish_decompress(cinfoptr);
jpeg_destroy_decompress(cinfoptr);
return 0;
}
int write_jpeg(j_compress_ptr cinfoptr, unsigned char
*image_buffer,int quality, int image_width, int image_height)
{ JSAMPROW row_pointer[1];

if (quality < 0) quality = 0; else if(quality > 100) quality = 100;
jpeg_set_quality(cinfoptr, quality, FALSE);
jpeg_start_compress(cinfoptr, TRUE);

while ((*cinfoptr).next_scanline < (*cinfoptr).image_height) {
row_pointer[0] = &image_buffer[(*cinfoptr).next_scanline*
image_width * (*cinfoptr).input_components];
(void) jpeg_write_scanlines(cinfoptr, row_pointer, 1);
}
jpeg_finish_compress(cinfoptr);
jpeg_destroy_compress(cinfoptr);
return 0;
}

bytea* kompresuj(bytea*obrazek,int zdjwyj_sz, int zdjwyj_w,int
stkompr, bool domyslne, J_DCT_METHOD metodadctbmp,int wspskalibmp,
boolean blokwygl, J_COLOR_SPACE tabkolorbmp, boolean kwantkolorbmp,int
wymilosckolbmp,boolean drprzebkwantbmp,J_DITHER_MODE metodawyglbmp,
J_COLOR_SPACE tabkolor,J_DCT_METHOD metodadctjpg,int wygladzjpg,int
wspskalijak)
{
int rc;unsigned char *zdjwej,*zdjwyj;
int zdjwej_w, zdjwej_sz;
int jakosc,i, j, k, ib, jb; double ratio;
int wymiary[2];
bytea* zdjwyjwyn;
/* Dekompresja - ustawianie obiektu cinfo */
struct jpeg_decompress_struct cinfo;
struct my_error_mgr jerr;
/* Kompresja dane do kompresji */
struct jpeg_compress_struct cinfokompr;
struct my_error_mgr jerr1;
/* ------------------------*/
//typedef void* declspec(dllimport) funkcjaTYP
(MemoryContext,Size);
//HINSTANCE uchwytDLL = LoadLibrary("libecpg.dll");
//funkcjaTYP *funkcja = (funkcjaTYP*)
GetProcAddress(uchwytDLL, "_MemoryContextAlloc");
jerr.pub.error_exit = my_error_exit;
cinfo.err = jpeg_std_error(&jerr.pub);
jpeg_CreateDecompress(&cinfo,JPEG_LIB_VERSION,
(size_t)sizeof(cinfo));
if (setjmp(jerr.setjmp_buffer)) {
jpeg_destroy_decompress(&cinfo);
};
jpeg_stdio_src(&cinfo, (FILE*) (unsigned)obrazek->vl_dat);
(void) jpeg_read_header(&cinfo, TRUE);
if(!domyslne)
{
cinfo.dct_method = metodadctbmp;
cinfo.scale_denom = wspskalibmp;
cinfo.do_block_smoothing = blokwygl;
cinfo.out_color_space = tabkolorbmp;
cinfo.quantize_colors = kwantkolorbmp;
cinfo.desired_number_of_colors =
wymilosckolbmp;
cinfo.two_pass_quantize = drprzebkwantbmp;
cinfo.dither_mode = metodawyglbmp;
}
else
{
cinfo.dct_method = JDCT_FLOAT;
}
if (zdjwej_sz > zdjwej_w)
{
ratio = zdjwyj_sz / (double)zdjwej_sz;
zdjwyj_w = (int)((double)zdjwej_w * ratio);
}
else
{
ratio = zdjwyj_w / (double)zdjwej_w;
zdjwyj_sz = (int)((double)zdjwej_sz * ratio);
}
rc = read_jpeg(&cinfo, &zdjwej ,&zdjwej_sz,
&zdjwej_w);
if (rc != 0) {}
else
{
zdjwyj = (unsigned char*)palloc(zdjwyj_sz * zdjwyj_w
*cinfo.output_components * sizeof(unsigned char));
for (j = 0; j < zdjwyj_w; j++)
{
jb = (int)((double)j / ratio);
for (i = 0; i < zdjwyj_sz; i++)
{
ib = (int)((double)i / ratio);
for (k = 0; k < 3; k++) zdjwyj[(j *
zdjwyj_sz + i) * 3 + k]= zdjwej[(jb * zdjwej_sz + ib) * 3 + k];
}
}
free(zdjwej);
jerr1.pub.error_exit = my_error_exit;
cinfokompr.err = jpeg_std_error(&jerr1.pub);
jpeg_create_compress(&cinfokompr);
zdjwyjwyn = (bytea*) palloc(sizeof(bytea));
jpeg_stdio_dest(&cinfokompr, (FILE*)(unsigned)
zdjwyjwyn->vl_dat);
if(!domyslne)
{
cinfokompr.image_width = zdjwyj_sz;
cinfokompr.image_height = zdjwyj_w;
cinfokompr.dct_method = metodadctjpg;
jpeg_set_linear_quality(&cinfokompr,
wspskalijak,0);
cinfokompr.jpeg_color_space = tabkolor;
cinfokompr.smoothing_factor = wygladzjpg;
}
else
{
cinfokompr.image_width = zdjwyj_sz;
cinfokompr.image_height = zdjwyj_w;
jpeg_set_defaults(&cinfokompr);
cinfokompr.dct_method = JDCT_FLOAT;
cinfokompr.smoothing_factor = 20;
}
rc = write_jpeg(&cinfokompr,zdjwyj,stkompr,zdjwyj_sz,
zdjwyj_w);
if (rc!= 0) return NULL;
return zdjwyjwyn;
}
return NULL;
}
..




MaciekGrygorcewicz@gmail.com - 02-10-2007 00:01
=?iso-8859-2?q?Re:_Problem_z_redefinicjami_makr_i_wielko=B6ci _w_funkcji_C_dla_Postgresa?=
  Aha oczywiscie jak parę razy udało mi się zlinkować bez błędu ,to i
tak biblioteka powstała z linkowania
nie działa z postgresem - po podaniu mu ścieżki do biblioteki i nazwy
funkcji ktorą ma używać - kompresuj , postgres wypisuje że nie widzi
takiej funkcji.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf mysql i mysql-front, problem String line; if (line=="cos"){...}....problem postgresql - int/int Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ] [PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ets2.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com