在C+中使用C代码+;项目 我想在我的C++项目中使用这个C代码: mysql.c: /* Simple C program that connects to MySQL Database server*/ #include <mysql.h> #include <stdio.h> #include <string.h> main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "rebourne"; /* set me first */ char *database = "mydb"; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); /* output table name */ printf("MySQL Tables in mysql database:\n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s \n", row[0]); /* close connection */ mysql_free_result(res); mysql_close(conn); }

在C+中使用C代码+;项目 我想在我的C++项目中使用这个C代码: mysql.c: /* Simple C program that connects to MySQL Database server*/ #include <mysql.h> #include <stdio.h> #include <string.h> main() { MYSQL *conn; MYSQL_RES *res; MYSQL_ROW row; char *server = "localhost"; char *user = "root"; char *password = "rebourne"; /* set me first */ char *database = "mydb"; conn = mysql_init(NULL); /* Connect to database */ if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } /* send SQL query */ if (mysql_query(conn, "show tables")) { fprintf(stderr, "%s\n", mysql_error(conn)); exit(1); } res = mysql_use_result(conn); /* output table name */ printf("MySQL Tables in mysql database:\n"); while ((row = mysql_fetch_row(res)) != NULL) printf("%s \n", row[0]); /* close connection */ mysql_free_result(res); mysql_close(conn); },c++,c,C++,C,但不是用g++ 你会怎么做? 编辑: 错误是: 出口(1);未在此范围内声明使用: extern "C" { YOUR CODE HERE } 使用: 首先:如果您向我们展示编译错误,可能会更有帮助 话虽如此,我最初的直觉是: extern "C" { #include <mysql.h> #include <stdio.h> #include <string.h> } extern“C” { #包括 #包括 #包括 }

但不是用g++

你会怎么做?

编辑: 错误是: 出口(1);未在此范围内声明使用:

extern "C"
{
    YOUR CODE HERE
}
使用:


首先:如果您向我们展示编译错误,可能会更有帮助

话虽如此,我最初的直觉是:

extern "C"
{
    #include <mysql.h>
    #include <stdio.h>
    #include <string.h>
}
extern“C”
{
#包括
#包括
#包括
}
这是一个猜测,但没有实际的错误消息,这是最好的你会得到


哦,也许文件重命名为.CPP,C++或.c(大写)会有帮助。

首先:如果你告诉我们编译错误,它可能会更有帮助。

#include <stdlib.h>
话虽如此,我最初的直觉是:

extern "C"
{
    #include <mysql.h>
    #include <stdio.h>
    #include <string.h>
}
extern“C”
{
#包括
#包括
#包括
}
这是一个猜测,但没有实际的错误消息,这是最好的你会得到

哦,也许文件重命名为.cp.C++,或者.c(大写)会有帮助。

<代码>
#include <stdlib.h>
虽然我怀疑它是否真的说了“退出(1)”。下次请显示准确的信息。

#包括

虽然我怀疑它是否真的说了“退出(1)”。下次请显示准确的消息。

现在,我已经很久没有编写C语言了(而且从来没有达到过很高的级别),但是我发现奇怪的是,您想要在已经存在的代码库中包含main()函数。到底是编译器还是链接器在抱怨?当您说GCC成功编译了代码时,您是只编译了一个源文件,还是将其包含在更大的代码库中


如果我的猜测是正确的,那么将函数重命名为main以外的其他函数是有意义的,例如connect_to_database()。

现在,我已经很久没有编写C了(而且从来没有达到过很高的级别),但我觉得奇怪的是,您想要将main()函数包含到已经存在的代码库中。到底是编译器还是链接器在抱怨?当您说GCC成功编译了代码时,您是只编译了一个源文件,还是将其包含在更大的代码库中


如果我的猜测是正确的,您可以将函数重命名为main以外的其他名称,例如connect_to_database()

首先,在报告未编译的内容时,始终提供错误。这些信息包含有价值的信息。也不要解释它们。将它们剪切并粘贴到它们自己的代码块中


其次,无论何时使用函数,都要检查文档。我从未见过C文档没有在手册页的顶部或同等位置告诉您所需的头文件。它既是文档的一部分,也是解释函数功能的一部分。在C和C++编程中需要大量的头。因此,为函数记录所需的标题是一种非常常见的文档习惯用法。

好的,现在给出了答案,有一些教训需要学习

首先,在报告未编译的内容时,始终提供错误。这些信息包含有价值的信息。也不要解释它们。将它们剪切并粘贴到它们自己的代码块中


其次,无论何时使用函数,都要检查文档。我从未见过C文档没有在手册页的顶部或同等位置告诉您所需的头文件。它既是文档的一部分,也是解释函数功能的一部分。在C和C++编程中需要大量的头。因此,为函数记录所需的标题是一种非常常见的文档习惯用法。

请发布使用g++exit()得到的错误消息,这些消息是在stdlib.hp中声明的。请发布使用g++exit()得到的错误消息,这些消息是在stdlib.ht中声明的。无需执行此操作。使用区分大小写文件名的人在地狱里有一个特别的角落留给他们?文件重命名还是外部“C”声明?我们知道很多头文件在C++中添加了“添加IFFS”来在内部添加外部“C”声明,但我不知道MySQL。h是它们中的一个。没有这些错误就没有办法辨别。啊,没关系。刚刚看了编辑。是的,通过实际的错误消息,查找错误要容易得多。我会在这里给出一个新的答案来解释一些事情。没有必要这样做。使用区分大小写文件名的人在地狱里有一个特别的角落留给他们?文件重命名还是外部“C”声明?我们知道很多头文件在C++中添加了“添加IFFS”来在内部添加外部“C”声明,但我不知道MySQL。h是它们中的一个。没有这些错误就没有办法辨别。啊,没关系。刚刚看了编辑。是的,通过实际的错误消息,查找错误要容易得多。我会在这里给出一个新的答案来解释一些事情。