#参考URL#
Windows 10 Visual Studio编译PostgreSQL 数据库-plpgsql_check扩展插件_msvc编译postgresql插件-CSDN博客
Windows 10 安装PostgreSQL 数据库 plpgsql_check扩展(源码编译)_windows postgres extension-CSDN博客
#前言#
本文记录Window10 64下安装postgresSQL 12的plpgsql_check扩展,以及遇到的问题的解决方法。
#下载plpgsql_check扩展的源码#
URL:https://pgxn.org/dist/plpgsql_check/2.7.5/
下载源码并解压
#安装数据库#
URL:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
#安装Visual studio#
URL:https://visualstudio.microsoft.com/zh-hans/downloads/
如果已经有visulstudio,却没有C++模块的,可以打开VisualStudio→tools→Get Tools And features,添加C++桌面开发。我这里用的是visual studio 2022社区版。
备注:用社区版的,源码会出现2处语法错误,用企业版的就不会报错。
#生成plpgsql.lib文件#
plpgsql_check依赖于plpgsql,我们需要添加plpgsql.lib。但是安装的Pg的lib文件夹没有对应lib文件。根据lib目录下的plpgsql.dll编译生成plpgsql.lib文件。
·打开visual studio→Tools→Command Line→Developer Command Prompt
·将pg的lib路径下的plpgsql.dll文件拷贝到新建的文件夹中。
※Program Files路径,会pumpbin不成功,因为文件夹名称中间含有空格。
·运行dumpbin命令来获得dll的所有导出函数的列表
dumpbin /EXPORTS C:\Users\mid1250\Downloads\plpg\plpgsql.dll
·创建plpgsql.def文件,将获取的所有名称(name)拷贝到plpgsql.def中,并在第一行添加固定值“EXPORTS”。
·生成lib文件
lib /DEF:C:\Users\mid1250\Downloads\plpg\plpgsql.def /MACHINE:x64 /out:C:\Users\mid1250\Downloads\plpg\plpgsql.lib
·将生成的plpgsql.lib文件复制到pg的lib目录下
#Windows 用Vs 进行源码编译plpgsql_check#
参考URL:Windows 10 Visual Studio编译PostgreSQL 数据库-plpgsql_check扩展插件_msvc编译postgresql插件-CSDN博客
1、创建空白c++工程。打开visual studio→File→New→Project
2、创建源文件。Source Files 右键 -> Add -> New Items...
※文件名要将.cpp变为.c,因为源代码是c语言。
3、将源码plpgsql_check.c拷贝进去,会出现错误,后面慢慢修正。
4、将源码文件下plpgsql_check.h、plpgsql_check_builtins.h文件拷贝到pg下的include文件下
5、项目配置
5-1、选择Release,设值成行x64。
右键项目名称 -> 点击Properties(属性),左上角的Configuration下拉框选择Release,选择x64位 5-2、选择Configuration Properties -> General, 设置“Configuration Type” to “Dynamic Library (.dll)”.
5-3、选择C/C++ -> Preprocessor -> Preprocessor Definitions -> <Edit...>,添加指令WIN64
5-4、选择 C/C++ -> Code Generation, 设置“Enable C++ Exceptions” to “No”。
5-5、选择 C/C++ -> Advanced ,设置“Compile As” to “C Code”。
5-6、选择 Linker -> Manifest File, 设置“Generate Manifest” to “No”.
5-7、选择Linker -> Input -> Additional Dependencies,添加postgres.lib、plpgsql.lib到资源库列表中。
5-8、引入和库目录。Configuration Properties -> C/ C++ -> General -> Additional Include Directories
5-9、设置库的路径。选择 “Linker”->”General”, in Additional Library Directories。
6、打包构建 。右键项目 -> Rebuild
大概率会出现如下错误:
解决方法:把源码的其它.c的文件全部添加到工程进来
源码:
添加完如下的感觉:
再次编译,理论上应该就成功。
但是,如果你用的VS是社区版的,估计还会有以下BUG。ps:写邮件给做这个插件的作者,他说他不会报错
解决方法1:用花钱的正式版vs来bulid
解决方法2:把有问题的2个文件语法报错的地方注释掉。
解决完问题就再次编译成功啦
生成的dll文件在工程的如下路径
7、拷贝 plpgsql_check.dll 到 PostgreSQL\12\lib。 (12替换成自己的版本)
8、源码文件夹下,拷贝plpgsql_check.control和plpgsql_check--2.7.sql到
PostgreSQL\12\share\extension
完成了!!!