
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.218] |
![]() |
|
![]() | Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Привет всем!
возник теперь вопрос как откомпилить приложения на Си с использование Апи МуСкула? ![]() ![]() #include <stdio.h> #include <mysql.h> MYSQL *conn; /* pointer to connection handler */ int main ( int argc, char *argv[] ) { conn = mysql_init ( NULL ); mysql_real_connect ( conn, /* pointer to connection handler */ "localhost", /* host to connect to */ "user_name", /* user name */ "password", /* password */ "test", /* database to use */ 0, /* port (default 3306) */ NULL, /* socket or /var/lib/mysql.sock */ 0 ); /* flags (none) */ mysql_close ( conn ); return 0; } gcc a.c -o a.exe -Lc:\mysql\bin\ -Ic:\mysql\include\ И в итоги получаю такое сообщение In file included from include/mysql.h:72, from a.c:2: include/mysql_com.h:183: error: `SOCKET' does not name a type include/mysql_com.h:358: error: `SOCKET' was not declared in this scope include/mysql_com.h:358: error: expected primary-expression before "const" include/mysql_com.h:358: error: expected primary-expression before "unsigned" include/mysql_com.h:359: error: expected primary-expression before "unsigned" include/mysql_com.h:359: error: initializer expression list treated as compound expression Плз, почему возникает такая ошибка |
Сообщ.
#2
,
|
|
|
Странно, по указанным строкам в указанном файле нет вообще ни каких упоминаний про структуру SOCKET.
А! В mysql.h нашлось. Ясно. Это так описали... Цитата Плз, почему возникает такая ошибка Не находит описания SOCKET. #include <winsock.h> в исходнике явно есть. Сталбыть, компиль не видит winsock.h... Кроме того, насколько я понимаю, это cygwin? Под вяндой лучше поставить себе "аналог" cygwin'а (в основе лежит mingw) -- Dev-C++. Из портов поставить библиотеки и исходники и забыть о всех проблемах. |
Сообщ.
#3
,
|
|
|
Немного подумав. Речь идёт вот об этом -> http://www.bloodshed.net/dev/devcpp.html
Ктому же, хоть gcc.exe и в винде, он по идее, должен "понимать" где находится, но не худо было бы ему явно указать это. -DWIN32 -D_WINDOWS -no-cygwin (чтобы полученная программа не требовала бы окружения cygwin при её распространении). Хотя, если честно, то лучше прогуляться по ссылке выше, скачатьоттуда порядка 5 MB, потом налоить через менеджер пакетов обновления (mysql и postgres там есть) и забыть о проблемах. Добавлено Цитата -Lc:\mysql\bin\ Кстати, а точно библиотека mysql лежит в c:\mysql\bin? |
Сообщ.
#4
,
|
|
|
Цитата Шадофф @ Под вяндой лучше поставить себе "аналог" cygwin'а (в основе лежит mingw) -- Dev-C++ т.е имели ввиду использовать mingw32-gcc!? mingw32-gcc aaa.c -o aaa.exe -Lc:\mysql\lib\opt\ -Ic:\mysql\include\ -DWIN32 -D_WINDOWS -no-cygwin результат тотже ![]() |
Сообщ.
#5
,
|
|
|
Цитата т.е имели ввиду использовать mingw32-gcc!? Угу. Он в Dev-C++ (в среду) встроенный. Это не сильно важно. Важнее другое -- там все пути сразу подточены. В данном случае, по-моему, не находит заголовочный файл от win. Он вообще есть? Я имею ввиду winsock.h? |
Сообщ.
#6
,
|
|
|
c:\MinGW\include\
да winsock.h есть |
Сообщ.
#7
,
|
|
|
понял!!! это дело в mysql.h!
#ifdef __LCC__ #include <winsock.h> /* For windows */ #endif вот токо как правильно mysql.h отредактировать ![]() |
Сообщ.
#8
,
|
|
|
Цитата понял!!! Я то же. Блин, я тормоз. Понял это когда глянул свой проект примерно трёх-летней давности... Цитата это дело в mysql.h! Отчасти да. Короче, для решения всех проблем надо сделать следующее: ![]() ![]() #include <my_global.h> #include <mysql.h> Вот именно в таком порядке эти два файла должны быть прописаны в исходнике. В my_global.h прописаны "конвертации" для платформы винды. И, на винде, оно так и должно быть прописано. Дальше, включаем либы: 1 вариант (он немного лучше) -- привязываем к проекту libmysql.lib. По сути дела, это враппер для загрузки по требованию libmysql.dll во время исполнения. 2 вариант (он хорош для случая, когда программа должна загружаться вся целиком (без длл по возможности)) -- привязываем к проекту статическую либу mysqlclient.lib. В этом случае весь функционал библиотеки будет сразу включён в твой исполняемый файл. Кроме того, в проекте должны быть привязаны либы -lm -lwsock32 -luser32 -lgcc. |