C语言编译时的错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编译时的错误相关的知识,希望对你有一定的参考价值。

参考技术A 你的系统头文件应该是放在C语言编译程序安装目录的include文件夹底下,而你的C语言编译器里的系统头文件路径可能因为你改变了工作路径而改变,需要重新设置。具体设置方法如下:
Options-----Directories将第一行中的路径修改成你TC的安装目录+\INCLUDE按OK即可(如下图)

开发 C 和 MYSQL 应用程序时的构建错误

【中文标题】开发 C 和 MYSQL 应用程序时的构建错误【英文标题】:Build Error in developing C and MYSQL application 【发布时间】:2012-03-20 10:06:16 【问题描述】:

我正在用 C 语言编写一些连接到 MYSQL 服务器的代码。我正在使用 Netbeans 并且对此很陌生。我按照指示对其进行了配置并安装了 MYSQL 连接器 C。我还从 cygwin 站点安装了 CYGWIN GCC、G++、GDB、MAKE。我创建了一个c项目并在属性->构建->c编译器->包含目录中,设置mysql连接器的路径(C:\Program Files\MySQL\Connector C 6.0.2\include)。现在我编写了一些代码来与 MYSQL 服务器交互,在构建时会发生一些错误。

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


int main(int argc, char** argv)    


MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;
char *server = "localhost";
char *user = "root";
char *password = "aaaa"; /* set me first */
char *database = "mysql";
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);

return (EXIT_SUCCESS);

构建后出现以下错误:

build/Debug/Cygwin-Windows/main.o: In function `main':
/cygdrive/c/Documents and Settings/AEM/My     Documents/NetBeansProjects/CppApplication_2/main.c:26: undefined reference to `_mysql_init'
/cygdrive/c/Documents and Settings/AEM/My    Documents/NetBeansProjects/CppApplication_2/main.c:28: undefined reference to     `_mysql_real_connect'
/cygdrive/c/Documents and Settings/AEM/My    Documents/NetBeansProjects/CppApplication_2/main.c:30: undefined reference to   `_mysql_error'
/cygdrive/c/Documents and Settings/AEM/My    Documents/NetBeansProjects/CppApplication_2/main.c:34: undefined reference to   `_mysql_query'
/cygdrive/c/Documents and Settings/AEM/My Documents/NetBeansProjects/CppApplication_2/main.c:35: undefined reference to `_mysql_error'
/cygdrive/c/Documents and Settings/AEM/My  Documents/NetBeansProjects/CppApplication_2/main.c:38: undefined reference to `_mysql_use_result'
/cygdrive/c/Documents and Settings/AEM/My   Documents/NetBeansProjects/CppApplication_2/main.c:41: undefined reference to   `_mysql_fetch_row'
/cygdrive/c/Documents and Settings/AEM/My Documents/NetBeansProjects/CppApplication_2/main.c:44: undefined reference to `_mysql_free_result'
/cygdrive/c/Documents and Settings/AEM/My  Documents/NetBeansProjects/CppApplication_2/main.c:45: undefined reference to `_mysql_close'
make[2]: Leaving directory `/cygdrive/c/Documents and Settings/AEM/My   Documents/NetBeansProjects/CppApplication_2'
make[1]: Leaving directory `/cygdrive/c/Documents and Settings/AEM/My   Documents/NetBeansProjects/CppApplication_2'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/Cygwin-Windows/cppapplication_2.exe] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2


BUILD FAILED (exit value 2, total time: 1s)

我搜索了很多,但找不到任何解决此问题的方法。需要帮助。

【问题讨论】:

这些是链接器错误。你在链接 MySQL 库吗? @Pileborg: HI,在属性-> 构建-> 链接器-> 附加库目录中,我设置了路径 C:\Program Files\MySQL\Connector C 6.0.2\lib\opt。但同样的错误仍在继续。 好的,您将路径设置为库可能所在的位置,但您是否在某处添加了实际库? @Pileborg:是的,在属性-> 构建-> 链接器-> 库中,我添加了 mysql.lib、mysqlclient.lib、mysys.lib,但它不起作用。请告诉我一件事,我应该从以下设置哪条路径? “C:\Program Files\MySQL\MySQL Server 5.5\lib”或“C:\Program Files\MySQL\MySQL Server 5.5\lib\debug”或“C:\Program Files\MySQL\Connector C 6.0.2\lib \debug" 或 "C:\Program Files\MySQL\Connector C 6.0.2\lib\opt"。我的意思是mysql c连接器的安装路径或mysql服务器的安装路径。因为两者都安装在“C:\Program Files\MySQL”中。 【参考方案1】:

添加 -lmysql 以链接 mysql 库(对 gcc 有效)。或者,如果您使用另一个编译器,请告诉编译器

Lib 所在的位置(添加路径) 将库链接到可执行文件。这是不同的东西,然后添加路径。

【讨论】:

@Beyer:您好,在属性-> 构建-> 链接器-> 附加库目录中,我设置了路径 C:\Program Files\MySQL\Connector C 6.0.2\lib\opt。但同样的错误仍在继续。我正在使用 WINDOWS XP 机器

以上是关于C语言编译时的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 ARM GCC 编译列表迭代器时的模板编译时错误

我的全栈之路-C语言基础之Visual Studio 2019使用技巧

递归 lambda 返回时的 gcc 4.9 内部编译器错误

使用Java语言编写的源程序保存时的文件扩展名是啥

使用Java语言编写的源程序保存时的文件扩展名是啥

c语言 编译错误