mysql.h编译,但不编译其功能

问题描述 投票:0回答:1

我试图了解如何在 C 程序中嵌入 SQL 代码,但是当我编译此代码时,我遇到了一个无法理解的问题:

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


MYSQL *mysql;
MYSQL_RES *results;
MYSQL_ROW record;


int main() {
 mysql = mysql_init(NULL);

 if (mysql == NULL) {
    fprintf(stderr, "%s\n", mysql_error(mysql));
    return 1;
}

if (mysql_real_connect(mysql, "localhost", "root", "PassWord",
     NULL, 0, NULL, 0) == NULL) {
    fprintf(stderr, "%s\n", mysql_error(mysql));
    mysql_close(mysql);
    return 1;
}

mysql_query(mysql, "SHOW DATABASES");

return 0;
}

这是编译器在编译时告诉我的内容:

clang++ -g -c testSql.cc
clang++ testSql.o -o testSql
/usr/bin/ld: testSql.o: in function `main':
/home/antoine/Documenti/L3/Information Management II/code/testSql.cc:12: undefined reference to `mysql_init'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:15: undefined reference to `mysql_error'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:19: undefined reference to `mysql_real_connect'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:21: undefined reference to `mysql_error'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:22: undefined reference to `mysql_close'
/usr/bin/ld: /home/antoine/Documenti/L3/Information Management II/code/testSql.cc:26: undefined reference to `mysql_query'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:25: testSql] Errore 1

我已经检查了

mysql.h
文件,这些功能已实现,所以我不明白为什么我有这个“未定义的引用”错误,有人知道这个错误的起源吗?

mysql c embedded-sql
1个回答
1
投票

谢谢大家的回答。我必须在编译中提供链接器。 我现在正在编译

clang++ -g -c testSql.cc
clang++ testSql.o -o testSql `mysql_config --cflags --libs`

而不是

clang++ -g -c testSql.cc
clang++ testSql.o -o testSql

并且编译正确。 谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.