Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mySQL+MinGW 
:(
    Опции темы
math64
Дата 7.2.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



Код

undefined reference to `mysql_init@4`


Как подключить библиотеку mySQL при компиляции под MinGW?
libmySQL.lib в поставке mySQL собрана под Visual C++?
Как её пересобрать под MinGW, если нужно?

PM   Вверх
JackYF
Дата 7.2.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(math64 @  7.2.2008,  09:25 Найти цитируемый пост)
Как подключить библиотеку mySQL при компиляции под MinGW?

-lимя библиотеки, -Lпуть_к_ней, если нестандартный.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
math64
Дата 7.2.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



ну я так и делаю - не видит компилатор этой библиотеки или не видит модулей в ней
Код

g++ -mno-cygwin -omy.exe main.o libmylib.a -L. -lwsock32 -lmySQL

или
Код

g++ -mno-cygwin -omy.exe main.o libmylib.a libmySQL.a -L. -lwsock32

Мою библиотеку видит, wsock32 - тоже
libmySQL.a - переименованная libmySQL.lib из поставки mySQL
PM   Вверх
JackYF
Дата 7.2.2008, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(math64 @  7.2.2008,  12:03 Найти цитируемый пост)
libmySQL.a - переименованная libmySQL.lib из поставки mySQL

нет, не пойдёт smile

пересобери под mingw или возьми другую поставку.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
math64
Дата 8.2.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



Насколько я понял, если я скачаю более свежий дистрибутив MySQL, я найду тоже там библиотеку только для VisualC.
А как её пересобрать?
Я нашёл сообщение об этом баге, им ответили что это не баг и дали ссылку на документацию MinGW.
Там написано, что в __stdcall VisualC добавляет подчёркивание, а MinGW - нет и предложили использовать pexports.
Но это в данном случае это не работает.
В libmySQL.dll имена экспортируются без _ и без @<n>.
В libmySQL.lib имена с _ и @.
В сгенерированном libmySQL.a нет ни _, ни @.
Нужно чтобы не было _, но были @, но ссылалились они на имена без _ и без @.

PM   Вверх
JackYF
Дата 8.2.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: нет
Всего: 162



Цитата(math64 @  8.2.2008,  09:09 Найти цитируемый пост)
А как её пересобрать?

скачать исходники и следовать инструкциям по сборке.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
math64
Дата 11.2.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: нет
Всего: 72



Нужно в libmysql.def дописать @<n> согласно сообщениям о неопределённых символах
Код

LIBRARY        libmySQL.dll
DESCRIPTION    'MySQL 3.23 Client Library'
VERSION        2.5
EXPORTS
    mysql_affected_rows@4
    mysql_close@4
    mysql_connect@16
    mysql_create_db@8
    mysql_data_seek@12
    mysql_debug@4
    mysql_drop_db
    mysql_dump_debug_info@4
    mysql_eof@4
    mysql_errno
    mysql_error@4
    mysql_escape_string@12
    mysql_fetch_field@4
    mysql_fetch_field_direct@8
    mysql_fetch_fields@4
    mysql_fetch_lengths@4
    mysql_fetch_row@4
    mysql_field_count@4
    mysql_field_seek@8
    mysql_field_tell@4
    mysql_free_result@4
    mysql_get_client_info@0
    mysql_get_host_info@4
    mysql_get_proto_info@4
    mysql_get_server_info@4
    mysql_info
    mysql_init@4
    mysql_insert_id
    mysql_kill@8
    mysql_list_dbs@8
    mysql_list_fields@12
    mysql_list_processes@4
    mysql_list_tables@8
    mysql_num_fields@4
    mysql_num_rows@4
    mysql_odbc_escape_string
    mysql_options@12
    mysql_ping@4
    mysql_query@8
    mysql_real_connect@32
    mysql_real_query@12
    mysql_refresh
    mysql_row_seek
    mysql_row_tell@4
    mysql_select_db@8
    mysql_shutdown@8
    mysql_stat@4
    mysql_store_result@4
    mysql_thread_id@4
    mysql_use_result
    bmove_upp
    delete_dynamic
    _dig_vec
    init_dynamic_array
    insert_dynamic
    int2str
    is_prefix
    list_add
    list_delete
    max_allowed_packet
    my_casecmp
    my_init
    my_end
    my_strdup
    my_malloc
    my_memdup
    my_no_flags_free
    my_realloc
    my_thread_end
    my_thread_init
    net_buffer_length
    set_dynamic
    strcend
    strdup_root
    strfill
    strinstr
    strmake
    strmov
    strxmov
    myodbc_remove_escape@8
    mysql_thread_safe@8
    mysql_character_set_name@4
    mysql_change_user@16
    mysql_send_query
    mysql_read_query_result
    mysql_real_escape_string

В тех функциях, которые я не использовал @ нет, в более свежем дистрибутиве список будет другой.
Список имён без @ можно получить:
Код

pexports libmySQL.dll

И вызвать dlltool:
Код

dlltool -C libmySQL.dll -d libmysql.def -l libmySQL.a -k

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | GNU toolchain | Следующая тема »


 




[ Время генерации скрипта: 0.2267 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.