XesperantoX
Mitglied
Hallo,
also ich habe ein Problem mit einem Embedded SQL Code und zwar habe ich eine kleine PostgreSQL Datenbank erstellt und möchte/muss nun über ein C-Programm auf die DB zugreifen. Soweit sogut... um das Ganze zu testen habe ich erstmal nur soweit geschrieben das die DB geöffnet, ein kurzer Text ausgegeben wird und die DB dann wieder geschlossen wird.
Den C-Code habe ich dann mit "ecpg" kompiliert und habe dann auch meine .c-Datei erhalten. Bis hierhin alles okay, aber wenn ich die Datei jetzt in Visual C++ 6.0 öffne und dort kompilieren bzw ausführen will bekomme ich folgende Fehler gemeldet:
Denke es hängt mit den Libaries und den Bibliotheken zusammmen die von PostgreSQL benötigt werden, aber wie kann ich diese denn automatisch einbinden
Die von ecpg kompilierte Datei sieht folgendermaßen aus:
Wäre dankbar wenn mir jemand einen Tipp geben könnte!
Grüße
Esperanto
also ich habe ein Problem mit einem Embedded SQL Code und zwar habe ich eine kleine PostgreSQL Datenbank erstellt und möchte/muss nun über ein C-Programm auf die DB zugreifen. Soweit sogut... um das Ganze zu testen habe ich erstmal nur soweit geschrieben das die DB geöffnet, ein kurzer Text ausgegeben wird und die DB dann wieder geschlossen wird.
Den C-Code habe ich dann mit "ecpg" kompiliert und habe dann auch meine .c-Datei erhalten. Bis hierhin alles okay, aber wenn ich die Datei jetzt in Visual C++ 6.0 öffne und dort kompilieren bzw ausführen will bekomme ich folgende Fehler gemeldet:
Code:
--------------------Konfiguration: EmbeddedC - Win32 Debug--------------------
Linker-Vorgang läuft...
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _ECPGdisconnect
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _sqlprint
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _ECPGget_sqlca
main.obj : error LNK2001: Nichtaufgeloestes externes Symbol _ECPGconnect
Debug/EmbeddedC.exe : fatal error LNK1120: 4 unaufgeloeste externe Verweise
Fehler beim Ausführen von link.exe.
EmbeddedC.exe - 5 Fehler, 0 Warnung(en)
Denke es hängt mit den Libaries und den Bibliotheken zusammmen die von PostgreSQL benötigt werden, aber wie kann ich diese denn automatisch einbinden
Die von ecpg kompilierte Datei sieht folgendermaßen aus:
Code:
/* Processed by ecpg (4.1.1) */
/* These include files are added by the preprocessor */
#include "c:\Programme\postgreSQL\8.1\include\ecpgtype.h"
#include "c:\Programme\postgreSQL\8.1\include\ecpglib.h"
#include "c:\Programme\postgreSQL\8.1\include\ecpgerrno.h"
#include "c:\Programme\postgreSQL\8.1\include\sqlca.h"
/* End of automatic include section */
#line 1 "c:\main.pgc"
#include <stdio.h>
#include <stdlib.h>
/* exec sql begin declare section */
/* exec sql end declare section */
#line 5 "c:\main.pgc"
#line 1 "C:/Programme/PostgreSQL/8.1/include/sqlca.h"
#ifndef POSTGRES_SQLCA_H
#define POSTGRES_SQLCA_H
#ifndef DLLIMPORT
#if defined(WIN32) || defined(__CYGWIN__)
#define DLLIMPORT __declspec (dllimport)
#else
#define DLLIMPORT
#endif /* __CYGWIN__ */
#endif /* DLLIMPORT */
#define SQLERRMC_LEN 70
#ifdef __cplusplus
extern "C"
{
#endif
struct sqlca_t
{
char sqlcaid[8];
long sqlabc;
long sqlcode;
struct
{
int sqlerrml;
char sqlerrmc[SQLERRMC_LEN];
} sqlerrm;
char sqlerrp[8];
long sqlerrd[6];
/* Element 0: empty */
/* 1: OID of processed tuple if applicable */
/* 2: number of rows processed */
/* after an INSERT, UPDATE or */
/* DELETE statement */
/* 3: empty */
/* 4: empty */
/* 5: empty */
char sqlwarn[8];
/* Element 0: set to 'W' if at least one other is 'W' */
/* 1: if 'W' at least one character string */
/* value was truncated when it was */
/* stored into a host variable. */
/*
* 2: if 'W' a (hopefully) non-fatal notice occurred
*/ /* 3: empty */
/* 4: empty */
/* 5: empty */
/* 6: empty */
/* 7: empty */
char sqlstate[5];
};
struct sqlca_t *ECPGget_sqlca(void);
#ifndef POSTGRES_ECPG_INTERNAL
#define sqlca (*ECPGget_sqlca())
#endif
#ifdef __cplusplus
}
#endif
#endif
#line 6 "c:\main.pgc"
/* exec sql whenever sqlerror sqlprint ; */
#line 7 "c:\main.pgc"
int main(int argc, char *argv[])
{
/* exec sql begin declare section */
/* exec sql end declare section */
#line 12 "c:\main.pgc"
{ ECPGconnect(__LINE__, 0, "olympia" , NULL,NULL , NULL, 0);
#line 14 "c:\main.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 14 "c:\main.pgc"
printf("Mit DB Olympia verbunden!");
{ ECPGdisconnect(__LINE__, "CURRENT");
#line 18 "c:\main.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 18 "c:\main.pgc"
system("PAUSE");
return 0;
}
Wäre dankbar wenn mir jemand einen Tipp geben könnte!
Grüße
Esperanto