使用VS将postgres.exe转换为dll文件
一、准备工作:
1、编译完成的pgsql源码;编译方法请参照博客:https://blog.****.net/u012867993/article/details/102466086。编译完成后的程序结构如下图:
2、下载win_flex_bison-latest.zip,进行词法解析和语法 解析工作。
二、配置安装win_flex_bison-latest.zip。VS重新编译的时候,不能生成词法解析和语法解析的.c文件。可以尝试重新生成,根据报错信息配置以下内容。下载地址:网址:https://sourceforge.net/projects/winflexbison/
1、将win_flex_bison-latest.zip解压
2、向工程中添加win_flex_bison-latest的targets文件
选择项目,右键生成依赖项,生成自定义。
添加现有的targets文件
选择添加后的文件,打√。
3、VS配置win_flex_bison-latest执行文件
选择项目,右键属性,选择VC++目录,选择可执行文件目录
点击编辑,选择win_flex_bison-latest根目录
4、配置语法解析Bison(.y文件)和词法解析flex(.l)
选择.y后缀的文件,以gram.y为例。
选择文件,右键属性,弹出的属性页中选择常规–》项类型
,项类型选择bison文件。点击右下角应用。
点击应用后发现配置属性常规下变为bison files。
选择bison files,选择bison Options,修改生成的头文件和c文件
点击确定,完成配置。
词法解析同理,选择.l文件,选择flex files,修改生成的头文件和源文件。
三、将原exe文件修改为dll文件。
1、配置dll文件
选择项目,右键属性,选择常规,项目默认值,配置类型,将exe修改为dll动态库。
2、配置输出文件地址和属性
输出目录:(Configuration)
中间目录:(Configuration)
目标文件名:$(ProjectName)
输出文件:(ProjectName)_d.dll
3、修改源码函数,支持函数导出
源码函数中增加
__declspec(dllexport) 标记,表示支持导出函数
四、生成dll文件
点击项目,右键重新生成
生成成功:
生成路径为:源码位置/debug/输出文件名
如:D:\workspace_c\postgresql-11.5\Debug\postgres_d.dll
生成dll文件完成。