vc++6.0 api로 작업하고 있습니다.
libpq.dll를 이용해서 클라이언트 응용프로그램을 만들어 보려고 합니다.
며칠 째 진전은 없고 헤매고 있습니다.
누구 구체적으로 좀 가르쳐 주세요.
lib,dll 생성에서 결합까지.
간단한 사용예도 있으면 더 좋고요
하도 힘들어 포기하려다가
마지막 구원의 손길을 뻗습니다.
의욕만 있는 초보가
우선 환경설정을 하셔야 컴파일이 됩니다.
간략히 설명드리자면,
[Tools] -> [Options] -> [Directories] 에서
<include files> 및 <Library files>에 PostgreSQL에서 사용하는
경로를 포함시키셔야 합니다.
제 경우에는
<include> C:\PROGRAM FILES\POSTGRESQL\8.1\INCLUDE
<library> C:\PROGRAM FILES\POSTGRESQL\8.1\LIB\MS
그리고 마지막으로 C:\PROGRAM FILES\POSTGRESQL\8.1\bin
디렉토리의 dll 파일들을 전부 Windows\system32 디렉토리에
복사하셔야 합니다.
이것으로 사용가능한 설정은 완료가 됩니다.
여기는 파일 업로드가 되지 않아서 <Files>란에 예제를 하나
올려 놓았습니다. 참고하세요^^
답변주신 것 감사합니다.
그런데 제가 하는것은 MFC가 아니라서 잘 모르겠습니다.
실험을 통해서 짠것인데 올려보겠습니다.
vc++ 6.0 api입니다.
#include <windows.h>#include <stdio.h>#include "libpq-fe.h"
PGconn *conn; PGresult *res; char query[128] = "select * from zipcode"; char *pghost, *pgport, *pgoptions, *dbname, *pguser, *pgpass;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);HINSTANCE g_hInst;LPCTSTR lpszClass="First";
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow){ HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst=hInstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=(WNDPROC)WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW | CS_VREDRAW; RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam;}
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam){ pghost = "localhost"; pgport = "5432"; pgoptions = NULL; dbname = "postgres";
pguser = "postgres"; pgpass = "111111";
switch(iMessage) { case WM_CREATE: conn = PQsetdbLogin(pghost, pgport, pgoptions, NULL,dbname, pguser, pgpass);
// 만약 연결에 오류가 발생했다면 // 오류메시지를 출력한다음에 종료한다. if (PQstatus(conn) == CONNECTION_BAD) { fprintf(stderr, "%s", PQerrorMessage(conn)); exit(0); }
case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam));}
에러부분
--------------------Configuration: pg1 - Win32 Debug--------------------Linking...pg1.obj : error LNK2001: unresolved external symbol _PQerrorMessagepg1.obj : error LNK2001: unresolved external symbol _PQstatuspg1.obj : error LNK2001: unresolved external symbol _PQsetdbLoginDebug/pg1.exe : fatal error LNK1120: 3 unresolved externalsError executing link.exe.
pg1.exe - 4 error(s), 0 warning(s)
김대현님이 하는것 처럼
C:\PROGRAM FILES\POSTGRESQL\8.1\bin
했습니다.
해결이 됐습니다.
프로젝트>셋팅>링크>오브젝트/라이브러리 모듈에서 libpq.lib를 추가하니 됩니다.