1

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

这是一个插图。编译成功:

> ecpg -o dbconnect.c dbconnect.pgc

缺少包含参数,因此预计会失败:

> cd ..
> ecpg -o src/dbconnect.c src/dbconnect.pgc
src/dbconnect.pgc:28: ERROR: could not open include file "vet_config.h" on line 28

添加 ecpg 包含参数。仍然失败:

> ecpg -I src -o src/dbconnect.c src/dbconnect.pgc 
src/dbconnect.pgc:28: ERROR: could not open include file "vet_config.h" on line 28

我试过指定 src 目录的绝对路径。没提升。我知道 -o 不是必需的。

我正在使用 PostgreSQL 9.2。这是来自 ecpg 的版本信息:

> ecpg -v -I src -o src/dbconnect.c src/dbconnect.pgc 
ecpg, the PostgreSQL embedded C preprocessor, version 4.8.0
EXEC SQL INCLUDE ... search starts here:
 src
 .
 /usr/local/include
 /usr/pgsql-9.2/include
 /usr/include
end of search list
4

1 回答 1

0

经过几天毫无结果的研究和调试代码的尝试,我终于在这个页面上找到了答案: http ://www.postgresql.org/docs/9.2/static/ecpg-preproc.html

我的整个问题是我的文件名用双引号括起来。从文档中:

但是当使用 EXEC SQL INCLUDE "filename" 时,只搜索当前目录。

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

于 2013-08-20T21:03:09.213 回答