2013-07-15 58 views
1

ecpg可以从包含源的目录运行,但不从任何其他目录运行时可以找到EXEC SQL INCLUDE头文件。ecpg无法找到包括,除非从包含源文件的目录执行

下面是一个例子。成功编译:

> 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 
+0

你的榜样为我工作。 –

+0

我很困惑从哪里去。我尝试了很多变化。我尝试下载源代码并进行调试,但我无法进入似乎在共享对象中的相关目标代码。我知道我之前已经调试过共享目标代码,所以它不应该很难。很明显,-v选项表示包含路径是正确的。编译后的源代码的行为与我当前的安装完全相同。它正在使用所有的默认路径。但是当它移动到非默认路径时,它拒绝找到我的头文件。 – kithril

回答

0

后无果而终的研究和尝试调试代码的日子里,我终于找到了答案在这里这个页面上:http://www.postgresql.org/docs/9.2/static/ecpg-preproc.html

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

但是,当使用EXEC SQL INCLUDE“文件名”时,只搜索当前目录。

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

相关问题