我很困惑,一个Error in file(con, "rb") : cannot open the connection
在我的g++ -o testpoco testpoco.cpp -lPocoFoundation
环境中是如何能够成功编译的。完整的C ++代码如下:
Cygwin
我安装了cygwin Poco开发标头和库,并确认它们位于:
但是没有在#include <Poco/File.h>
int main (int argc, char *argv[])
{
Poco::File f("/tmp/test.log");
if (f.exists()) {
return 1;
}
return 0;
}
中指定包含和库路径,它是如何编译和生成exe的?我检查了g++
的输出,但没有看到到g++ -v
的任何路由。
答案 0 :(得分:2)
编译器具有包含文件和库的默认搜索路径。 (实际上,后者适用于链接器,而不适用于编译器,但是g++
命令会同时调用两者。)
/usr/include
和/usr/lib
在这些默认搜索路径中。
您指定了#include <Poco/File.h>
,因此编译器找到了/usr/include/Poco/File.h
。
您指定了-lPocoFoundation
,因此链接器找到了/usr/lib/libPocoFoundation.dll.a
,该文件包含在Cygwin下实现PocoFoundation库的代码。
答案 1 :(得分:1)
我检查了
g++ -v
的输出,但没有看到任何通往Poco的路线
命令g++ -v
只会打印出有关GCC以及其配置方式的一些版本信息。将-v
选项添加到用于编译和/或链接的实际命令中,将显示标题和库的搜索路径。
换句话说,您不仅应该尝试g++ -v
,还应该尝试:
g++ -o testpoco testpoco.cpp -lPocoFoundation -v
这将显示Keith Thompson在其答案中引用的搜索路径。