【问题标题】:MySQL C API compilation error, crtdbg.h not foundMySQL C API 编译错误,crtdbg.h not found
【发布时间】:2011-09-02 17:10:05
【问题描述】:

我正在创建一个使用 mysql api 的基本 C 程序。我在 Windows 上,使用 mingw 作为编译器,使用 eclipse cdt 作为我的 IDE。我已经添加了 mysql 包含文件的包含路径和 mysqlclient.lib 文件的 lib 路径。 但是,我收到此错误:

D:\Programs\MinGW\include\mysql/my_dbug.h:108:20: fatal error: crtdbg.h: No such file or directory

这是我的代码:

#include <stdio.h>
#include <my_global.h>
#include <mysql.h>

int main(int argc, char *argv[]) {
    printf("Hello World\n");
    return 0;
}

如果没有人能帮我解决这个问题,有人能告诉我使用 mysqlclient.lib 和 libmysql.lib/libmysql.dll 有什么区别吗?

干杯。

【问题讨论】:

    标签: mysql c compiler-errors mingw crtdbg.h


    【解决方案1】:

    恐怕MinGW发行版中没有crtdbg.h。我认为在 Windows 上,这个头文件带有微软的编译器。我相信你也可以使用 Cygwin 而不是 Micrsoft 的编译器,因为在 Windows 上编译 MySql 只能使用 Cygwin 或 Microsoft 的编译器(不支持 MinGW),所以理论上 Cygwin 应该能够编译你的程序。

    您还可以通过安装 Windows SDK 免费获得微软的编译器。

    如果没有人能帮我解决这个问题,有人能告诉我使用 mysqlclient.lib 和 libmysql.lib/libmysql.dll 有什么区别吗?

    mysqlclient.lib 应该是静态库,libmysql.lib/libmysql.dll 是动态库。

    注意:如果您想在微软的编译器中使用静态库,那么它必须使用与您编程相同的编译器(以及相同的版本)进行编译。你可以找到更多关于在 windows here 上编译的信息。查看最后一节在 Microsoft Windows 上编译 MySQL 客户端

    更新:使用微软的编译器,您可以使用以下命令编译您的代码:

    cl mysource.c /IC:\Path\To\MySql\Include\Directory /link /LIBPATH:C:\Path\To\MySql\Lib\Directory /DEFAULTLIB:libmysql
    

    【讨论】:

    • 嗯,我在MinGW上成功编译了c客户端(在对代码和构建系统进行了一些修改之后),所以这不是不可能的。我现在正在尝试让 c++ 连接器编译...
    • 好消息。这个答案是一年前写的,所以我猜代码已经有了一些改进。您能在这里描述一下您的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-25
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多