【问题标题】:Compiling Openzwave's example编译 Openzwave 的例子
【发布时间】:2015-04-21 18:09:51
【问题描述】:

我已经使用 sudo make 和 sudo make install 在我的 ubuntu 系统上成功安装了 Open-zwave。在此之后,我想编译这个包中的示例(进入 cpp/example 并执行“make”),但在此之后他向我展示了许多他没有找到的函数。这位于头文件中。头文件包含在主文件中,我没有通过自动创建的 makefile 进行任何更改。有人有同样的问题吗? 以下是错误示例:

/home/ubuntu/OPENZWAVE/install/open-zwave-master/cpp/examples/MinOZW/.lib/Main.o:在函数main': Main.cpp:(.text.startup+0x7a): undefined reference toOpenZWave::Manager::getVersionAsString()' Main.cpp:(.text.startup+0x108): undefined reference to `OpenZWave::Options::Create(std::string const&, std::string const&, std::string const&)'

而且还有很多这样的函数遗漏了,它们在头文件中(编译器发现...)

我用 eclipse 和终端编译了这个例子……是一样的。

我希望有人能提供帮助。我对编写自己的 Makefile 了解不多。如果需要,我可以将生成的 makefile 复制到这里。 谢谢你的帮助。

【问题讨论】:

  • 嗨,我自己发现了问题。1。标头仅在一个带有“HEADER”的文件夹中搜索,但如果我使用
    并将路径写入 eclipse 中的 includepath 中,他会找到所有。 2.编译器错过了openzwave的链接器以及在哪里可以找到lib。这就是问题所在,为什么他找不到标题中的每个函数。
  • 您找到解决方案了吗?

标签: c++ ubuntu makefile z-wave


【解决方案1】:

IIRC,getVersionAsString() 是最近添加的静态函数。很可能您的系统中安装了 较旧 版本的 OpenZWave,编译失败,因为它从那里加载了头文件。

你在make成功后跑过sudo make install吗?这应该用较新的安装替换旧的 OpenZWave 安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多