【问题标题】:mysql_version.h not found when building application with mysql++使用 mysql++ 构建应用程序时找不到 mysql_version.h
【发布时间】:2013-08-18 04:53:12
【问题描述】:

我想用 c++ 和 linux (ubuntu 12.04) 中的 mysql++ 库(包装器)连接到我的 MySQL 数据库。我通过 xampp for linux 安装了 mysql,但也尝试使用 sudo apt-get istall mysql-server。我得到了带有sudo apt-get install libmysqlclient15-dev 的mysql++ 库。

include 语句include <mysql++/mysql++.h> 没有给出警告,但是当我尝试构建我的应用程序时,这是编译错误:

In file included from /usr/include/mysql++/connection.h:38:0, from /usr/include/mysql++/mysql++.h:56, from /home/bert/Documents/QtProjecten/FGBG/modules/server/mysqldb.h:6, from /home/bert/Documents/QtProjecten/FGBG/modules/server/mysqldb.cpp:1: /usr/include/mysql++/common.h:131:28: fatal error: mysql_version.h: No such file or directory compilation terminated.

/usr/include/mysql++ 目录中确实没有mysql_version.h。有人知道这意味着什么吗?我几乎找不到任何关于这件事的文档,我什至尝试将mysql_version.h-文件从/usr/include/mysql复制到/usr/include/mysql++

编辑:

  • 我的文件系统中有两个 mysql++ 目录:/usr/local/include/mysql++/usr/include/mysql++。这可能是个问题吗?
  • 我把#include <mysql++/mysql++.h>改成了</usr/include/mysql++/mysql++.h>,没用。
  • 当我在 Cmakelist 中更改 GXX 标志(-DMYSQLPP_MYSQL_HEADERS_BURIED-I/usr/include/mysql)时,它不再识别 mysqlpp 命名空间。

这是我的头文件的代码:

#ifndef MYSQLDB_H
#define MYSQLDB_H

#include <mysql++/mysql++.h>

class MySQLDB{

public:
MySQLDB();
~MySQLDB();
bool open(std::string dbname, std::string hostname, std::string username, std::string password);
mysqlpp::StoreQueryResult query(std::string sql);
bool close();

private:
mysqlpp::Connection conn;
};
#endif

【问题讨论】:

    标签: c++ mysql mysql++


    【解决方案1】:

    检查是否可以使用链接mysqlpp命名空间,

    dpkg -L libmysql++-dev
    

    如果是,即如果您有 libmysqlpp.a,请使用 -lmysqlpp 链接它,如下所示,

     g++ sm_cpp.cpp -o test -I/usr/include/mysql++ -I/usr/include/mysql -lmysqlpp
    

    它会起作用的。链接器在标准目录列表中搜索该库,该库实际上是一个名为 liblibrary.a 的文件。然后,链接器使用这个文件,就好像它已经按名称精确指定了一样。 include &lt;mysql++.h&gt; - No such file or directory

    【讨论】:

      【解决方案2】:

      mysql_version.h 是 mysql 包的一部分,而不是 mysqlpp 包。只需将 /usr/include/mysql 或 usr/local/include/mysql [取决于您安装 mysql 开发文件的位置] 包含到您的 IDE 中。简单的解决方案(:

      【讨论】:

        【解决方案3】:

        使用-DMYSQLPP_MYSQL_HEADERS_BURIED 标志编译,或者直接包含mysql 目录。 IE。尝试以下方法之一:

        g++ test.cpp -o test -DMYSQLPP_MYSQL_HEADERS_BURIED
        
        g++ test.cpp -o test -I/usr/include/mysql/
        

        这两个都对我有用。

        更多信息可以在this bug report找到。

        【讨论】:

          【解决方案4】:

          如果您构建自己的包,从系统中卸载所有相关的开发包(mysql++)可能会有所帮助。

          【讨论】:

          • 嗨,请看我的编辑。你对这个问题还有什么建议吗?谢谢
          猜你喜欢
          • 2019-12-30
          • 1970-01-01
          • 2015-01-14
          • 1970-01-01
          • 2017-09-07
          • 2015-01-18
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多