Postgresql ecpg可以';除非从包含源文件的目录中执行,否则无法找到includes

Postgresql ecpg可以';除非从包含源文件的目录中执行,否则无法找到includes,postgresql,ecpg,Postgresql,Ecpg,当从包含源代码的目录运行时,ecpg可以找到EXEC SQL INCLUDE头文件,但不能从任何其他目录运行 这是一个例子。成功编译: >ecpg-o dbconnect.c dbconnect.pgc 缺少包含参数,因此预计将失败: >cd。。 >ecpg-o src/dbconnect.c src/dbconnect.pgc src/dbconnect.pgc:28:错误:无法打开第28行的包含文件“vet_config.h” 添加ecpg include参数。仍然失败: >ecpg-I

当从包含源代码的目录运行时,ecpg可以找到EXEC SQL INCLUDE头文件,但不能从任何其他目录运行

这是一个例子。成功编译:

>ecpg-o dbconnect.c dbconnect.pgc
缺少包含参数,因此预计将失败:

>cd。。
>ecpg-o src/dbconnect.c src/dbconnect.pgc
src/dbconnect.pgc:28:错误:无法打开第28行的包含文件“vet_config.h”
添加ecpg include参数。仍然失败:

>ecpg-I src-o src/dbconnect.c src/dbconnect.pgc
src/dbconnect.pgc:28:错误:无法打开第28行的包含文件“vet_config.h”
我已经尝试指定src目录的绝对路径。没有改善。 我知道-o是不必要的

我正在使用PostgreSQL 9.2。以下是ecpg的版本信息:

>ecpg-v-isrc-osrc/dbconnect.csrc/dbconnect.pgc
ecpg,PostgreSQL嵌入式C预处理器,版本4.8.0
执行SQL包括。。。搜索从这里开始:
src
.
/usr/本地/包括
/usr/pgsql-9.2/include
/usr/包括
搜索列表结束

经过几天毫无结果的研究和调试代码的尝试,我终于在本页找到了答案:

我的全部问题是文件名用双引号括起来了。从文件中:

但是当使用execsqlinclude“filename”时,只搜索当前目录


我删除了双引号,一切都很好

你的例子对我很有用。我不知道该怎么办。我试过很多种变体。我尝试下载源代码并对其进行调试,但无法进入相关的目标代码,这些代码似乎位于共享对象中。我知道我以前调试过共享对象代码,所以应该不会这么难。显然,-v选项表示include路径是正确的。编译后的源代码的行为方式与我当前的安装完全相同。它正在使用所有默认路径。但当移动到非默认路径时,它拒绝找到我的头文件。