여기에 제공된 지침에 따라 첫 번째 DLL을 만들려고합니다. https://en.scribd.com/doc/40725510/Build-PostgreSQL-C-Functions-on-Windows 이 함수는 간단하며 다른 컴퓨터에서 작동됩니다.Microsoft Visual Studio를 사용하여 Windows에서 64 비트 PostgreSQL 데이터베이스 용 C 함수 DLL 만들기
#include "postgres.h"
#include "fmgr.h"
#include <windows.h>
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
#if defined(_WIN32)
#define DLLEXPORT __declspec(dllexport)
#else
#define DLLEXPORT
#endif
#define WIN32_LEAN_AND_MEAN
#define NOCOMM
PG_FUNCTION_INFO_V1(fibbonachi);
DLLEXPORT Datum
fibbonachi(PG_FUNCTION_ARGS)
{
int32 arg = PG_GETARG_INT32(0);
if (arg > 0 && arg < 100)
{
if (arg == 1 || arg == 2)
PG_RETURN_INT32(1);
else
{
int arr[100];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < arg; i++)
arr[i] = arr[i - 1] + arr[i - 2];
PG_RETURN_INT32(arr[arg - 1]);
}
}
else
PG_RETURN_INT32(0);
}
구성 관리자에서 Active Solution Platform으로 Win32를 사용하는 한 빌드가 성공합니다. 그러나, 나는 코드에 따라 pgAdmin에서 함수를 작성하려고하면
CREATE or REPLACE FUNCTION fibbonachi(integer) RETURNS integer
AS E'D:\\Homework\\Databases\\PostgreSQL_dll\\Debug\\PostgreSQL_dll.dll', 'fibbonachi'
LANGUAGE C STRICT;
내가 오류 "% 1은 올바른 Win32 응용 프로그램이 아닙니다"얻는다. 그것은 PostgreSQL의 64 비트 버전을 사용하기 때문에 예상됩니다. 그러나 솔루션 플랫폼을 x64로 바꾸면 (잘못하지 않은 경우 오류를 수정하는 데 필요합니다) progect를 빌드하면 MSVCRTD.lib 파일의 "확인할 수없는 외부 기호"오류 32 개가 발생합니다. 비슷한 문제에 대한 토론을 여기에서 발견했습니다 : https://social.msdn.microsoft.com/Forums/vstudio/en-US/c1553a42-7d1e-4c74-9156-95768a72e4df/unresolved-externals-after-upgrading-from-vs2008-to-vs2010?forum=vcgeneral 다른 버전의 Visual Studio에서 충돌하는 라이브러리로 인해 오류가 발생하지만 재설치가 도움이되지 않아 수동으로 경로를 수정하는 방법을 모릅니다. 여전히 내 문제가 동일하다는 것을 완전히 확신하지 못함). 내가 사용하는 경로는 명령과 동일하지만 대신 PostgreSQL을의 64 비트 버전을 사용 sucsessfully의 x64 progect을 구축하는 방법의
C:\Program Files\Microsoft SDKs\Windows\v7.0\Include
C:\Program Files\PostgreSQL\9.3\include\server\port\win32
C:\Program Files\PostgreSQL\9.3\include\server\port
C:\Program Files\PostgreSQL\9.3\include\server
C:\Program Files\PostgreSQL\9.3\include\internal
+directory of dummy header libintl.h
어떤 아이디어?
최근에 내가 작성한 블로그 기사 : http://blog.2ndquadrant.com/compiling-postgresql-extensions-visual-studio-windows/도 참조하십시오. –