【问题标题】:How to include the mysql header?如何包含 mysql 标头?
【发布时间】:2011-01-31 18:02:42
【问题描述】:

我正在从源代码构建一个开源项目,

并且需要包含<mysql.h>:

#if USE_MYSQL
#include <mysql.h>
#endif

编译器报告:

mysql.h no such file or directory

MySQL 是另一个伟大的开源项目。我需要做什么才能让它发挥作用?

【问题讨论】:

  • #include "mysql.h" 有效吗? &lt; &gt;" " 之间的包含之间存在差异(取决于文件是否与正在编译的代码位于同一目录中,或者其他位置 - 对我来说已经有一段时间了,我忘记了细节,请查一下)。另外,您的 MySQL 源的路径是什么,该路径是您构建路径的一部分吗?
  • 版本?操作系统?编译器?环境?

标签: c++ mysql build


【解决方案1】:

这将完全取决于您的构建方法,无论是使用 Visual Studio、Eclipse 等 IDE,还是在 *nix 中使用 shell 脚本和命令行。

您需要确保该文件 (mysql.h) 存在于您的“包含”路径中。

例如,在 Visual Studio 中,您将进入:

项目属性 -> 配置属性 -> C/C++ -> 常规 -> 附加包含目录

并包含保存“mysql.h”的目录。

然后,对于您的链接器属性,重复这些步骤并在您的附加库目录中包含相应的 DLL/LIB 文件路径

这会因您的环境而有很大差异,因此需要更多信息才能获得准确的分步操作。但这应该可以解释实际的问题。

【讨论】:

  • 我既没有mysql.h也没有mysql.lib,我应该在哪里下载呢?
  • @symfony: EPIC FAIL XD 你希望如何包含一个你没有的文件?
  • 源下载中是否包含库?
  • @symfony,你可以下载看看。您只需约 20MB 就能找到答案。
【解决方案2】:

对我来说,在 Ubuntu 12.04 上,我需要使用这个包含

#include <mysql/mysql.h>

【讨论】:

    【解决方案3】:

    您是否尝试为包含语句提供文件的完整路径?

    【讨论】:

    • 当你不得不改变你的开发环境时你会怎么做?
    • @klez:使用文件的完整路径进行测试 is 作为测试是否有效。当然不应该这样……
    • @FrustratedWithFormsDesigner 是的,我就是这个意思:-)
    • 尽管#include 指令中的完整路径是允许的,但不鼓励使用。更好的做法是将文件夹添加到编译器列表中,然后从 #include 指令中删除它们。
    • 同意大家的意见!改写:“您是否尝试仅出于测试目的包含文件的完整路径,以查看编译器是否尝试获取正确的路径?”
    【解决方案4】:
    #include  "path-spec"
    #include  <path-spec>
    

    这两种语法形式都会导致将该指令替换为指定包含文件的全部内容。两种形式的区别在于路径指定不完整​​时预处理器查找头文件的顺序。

    #include "path-spec" 指示预处理器在包含#include 语句的文件的同一目录中查找包含文件,然后在包含(#include)该文件的任何文件的目录中查找。然后预处理器沿着 /I 编译器选项指定的路径搜索,然后沿着 INCLUDE 环境变量指定的路径搜索。

    #include &lt;path-spec&gt; 指示预处理器首先沿着 /I 编译器选项指定的路径搜索包含文件,然后在从命令行编译时,沿着 INCLUDE 环境变量指定的路径搜索。

    我不知道您使用的是什么编译器,但它可能需要您将包含和库添加到编译中:

    g++ bla.cpp -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient_r
    

    【讨论】:

    • 实际上,它与 -I 选项无关——除非你在 GCC 上。更正确的说法是它要求编译器查找头文件,而不是使用当前正在编译的文件的相对路径。因此,-1 表示不完全正确,但 +1 表示获取 OP 所需信息的要点。
    【解决方案5】:

    g++ -o 程序名 $(mysql_config --cflags) 程序文件.cpp $(mysql_config --libs)

    在 Linux 中有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2021-06-26
      • 2014-11-29
      相关资源
      最近更新 更多