Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在include之后找不到sql函数_C++_Mysql_C_Macos - Fatal编程技术网

C++ 在include之后找不到sql函数

C++ 在include之后找不到sql函数,c++,mysql,c,macos,C++,Mysql,C,Macos,我一直在MacOSX上用c编写一个基本的服务器/客户端程序,当我试图将服务器链接到mysql数据库时,我遇到了严重的问题。我检查了sql头文件,它有编译器找不到的所有函数声明。我下载了一个连接器,专门针对x86_64体系结构,使用它会产生相同的错误 考虑以下代码: #include <mysql/mysql.h> #include <mysql/my_global.h> int main(int argc, char const *argv[]) { //Cre

我一直在MacOSX上用c编写一个基本的服务器/客户端程序,当我试图将服务器链接到mysql数据库时,我遇到了严重的问题。我检查了sql头文件,它有编译器找不到的所有函数声明。我下载了一个连接器,专门针对x86_64体系结构,使用它会产生相同的错误

考虑以下代码:

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

int main(int argc, char const *argv[]) {

   //Create the connector object
   MYSQL *con = mysql_init(NULL);
   if (con == NULL) {
     fprintf(stderr, "%s\n", mysql_error(con));
     exit(1);
   }

   //Connect to database
   if (mysql_real_connect(con, "localhost", "username","password", NULL, 0, NULL, 0) == NULL) {
     fprintf(stderr, "%s\n", mysql_error(con));
     mysql_close(con);
     exit(1);
   }
}  

如果您有任何关于这里出了什么问题的帮助,我们将不胜感激

MySQL文档特别解释了如何将您的程序与MySQL链接。这是从上面的链接粘贴的副本:


mysql_config显示编译或链接所需的选项:

shell> mysql_config --cflags
shell> mysql_config --libs
您可以运行这些命令以获得正确的选项,并手动将它们添加到编译或链接命令中。或者,使用backticks将mysql_config的输出直接包含在命令行中:

shell> gcc -c `mysql_config --cflags` progname.c
shell> gcc -o progname progname.o `mysql_config --libs`


如果你使用C++(你的C和C++都是你的标签),你当然想用<代码> G++< /C> >代替<代码> GCC < /> >,当然也要用<代码> > CXFLASKS。头文件告诉编译器关于这些函数的信息,但是链接器还需要找到它们的实际实现。您从此处的链接器(ld)收到错误。您使用的是预编译头吗?@Yunnosch是的,我使用的是预编译头headers@CrisLuengo我确信我可以从那里将库链接到标题。您能详细说明一下吗?在命令行中添加

-l
。在Xcode中,我确信有一个地方可以指定要链接到的库。请参阅文档以了解其位置。请参阅MySQL文档,了解您需要链接到哪个库。我没有用过MySQL,所以我不知道。但我确实认识到一个错误:“ld:symbol(s)not found”表示您没有链接到所需的库。这解决了我的问题+1为了简洁和简单的回答,因为在我的例子中,标志已经包含在sql头中,gcc-o程序progame.c
mysql\u config--libs
为我完成了这项工作。只是另一种选择
shell> gcc -c `mysql_config --cflags` progname.c
shell> gcc -o progname progname.o `mysql_config --libs`