2013-02-14 3 views
1

Я пытаюсь подключиться к mariaDB с C API https://downloads.mariadb.org/client-native/1.0.0/ Я нахожусь в окнах 8 и использую Code :: Blocks 12.11 для компиляции и записи кода.mariadb c api windows undefined ссылка на

  • Я положил папку с .h-файлов в D: \ Programmering \ biblotek \ C \ MariaDB-API \ включают
  • и папку с .lib-файлы в D: \ Programmering \ biblotek \ C \ MariaDB-API \ Lib

Итак:

\include has all the .h files 

\lib  has all the .lib files 

Сшивание Я сделал следующее, чтобы связать библиотеку:

-связанной \ включают папку в Настройки -> Compiler .. -> Каталоги ->Compiler

-связанной \ Lib папку в Настройки -> Compiler .. -> каталоги ->Linker

-связанной libmariadb.lib в Настройки -> Compiler .. -> Linker Настройки

Пауза ...

-связанной \ включают папку в Project -> Build Options ... -> Поиск каталогов ->Compiler

-связанной \ Lib папку в Project -> Build Options ... -> каталоги ->Linker

-связанной libmariadb.lib в Project -> Build Options ... -> Linker Настройки

В Project -> Build вариант ... У меня есть выбранный компилятор «Компилятор GNU GCC».

флаги компилятора: -g

Это код:

#include <windows.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <C:\MinaProgram\Libs\sqlclientC\include\mysql.h> 
#include <my_global.h> 
#include <mysql.h> 

int main(void) { 

MYSQL mysql; 
MYSQL_ROW row; 
const char *aQuery = "SELECT * from livedata"; 

if(mysql_library_init(0, NULL, NULL)) { //Initiera bibliotek 
fprintf(stderr, "could not initialize MySQL library\n"); 
exit(1); 
} 
printf("AH!\n"); 
MYSQL mysql; 
mysql_init(&mysql); 

if(!mysql_real_connect(&mysql,"localhost","root","ooops","firsttest",0,NULL,0)) { //Anslut till databas, error meddelande om fel. 
fprintf(stderr, "Failed to connect to server!\n"); 
} 

/*GO CODE*/ 
if(!mysql_real_query(&mysql, aQuery, strlen(aQuery))) { 
fprintf(stderr, "Query error, kinda'\n"); 
} 

//mysql_fetch_row() 

/*CLOSURE */ 
mysql_close(&mysql); 
mysql_library_end(); 

return EXIT_SUCCESS; 
} 

компилировать, и это ответ в журнале сборки:

||=== test, Release ===| 
obj\Release\main.o:main.c:(.text.startup+0x32)||undefined reference to `mysql_library_init'| 
obj\Release\main.o:main.c:(.text.startup+0x54)||undefined reference to `[email protected]'| 
obj\Release\main.o:main.c:(.text.startup+0x95)||undefined reference to `[email protected]'| 
obj\Release\main.o:main.c:(.text.startup+0xb4)||undefined reference to `[email protected]'| 
obj\Release\main.o:main.c:(.text.startup+0xeb)||undefined reference to `[email protected]'| 
obj\Release\main.o:main.c:(.text.startup+0xf1)||undefined reference to `mysql_library_end'| 
||=== Build finished: 6 errors, 0 warnings (0 minutes, 3 seconds) ===| 

Я искал StackOverflow и Google и не нашел ничего, что работает для меня, поэтому я решил подробно рассказать, как я поступаю неправильно.

Любые идеи о подключении к mariaDB с помощью C? (Как сделать эту работу над программой)

С уважением!

Совет времени жизни земли: Не получить Windows 8.

+0

Это выглядит как ошибка линкера. Что это за сборка (ссылка), пожалуйста? – alk

+0

Я использую Build -> Build (Ctrl + F9). Я ничего не делал в блоках кода, за исключением ссылок, подобных опубликованным. Я действительно не знаю о команде связи. Это флаг или что-то, что я пропустил? – Dave

ответ

0

Link полный путь D: \ Programmering \ biblotek \ C \ MariaDB-API \ Lib \ libmariadb.lib в проекте -> Параметры сборки ... -> Настройки компоновщика.

Я не уверен, что линкер «поисковые каталоги» работа, я не мог заставить их работать

Alernatively, вы могли бы использовать CMake для генерации кода :: Blocks проекту