【发布时间】: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”中。
标签: mysql c netbeans eclipse-cdt