Cygwin g ++如何解决它?

时间:2019-03-19 23:03:07

标签: g++ cygwin poco

我很困惑,一个Error in file(con, "rb") : cannot open the connection在我的g++ -o testpoco testpoco.cpp -lPocoFoundation环境中是如何能够成功编译的。完整的C ++代码如下:

Cygwin

我安装了cygwin Poco开发标头和库,并确认它们位于:

  • / usr / include / Poco /(头文件)
  • / usr / lib /(这些库)

但是没有在#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的任何路由。

2 个答案:

答案 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在其答案中引用的搜索路径。