На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > MySQL =|, работа с базой данных С/С++
      :huh: Доброго дня.
      Не могу создать подключение к БД, странная ошибка на mysql_init():
      Цитата
      Process finished with exit code -1073741515 (0xC0000135)


      Поможите люди добрые, кто чем может... Дядя Гуугл ни чего не говорит, на форуме подобной ошибки не нашел.

      ExpandedWrap disabled
        #include <iostream>
        #include "mysql.h"
         
        int main() {
            MYSQL *mysql;
         
            mysql_init(mysql);
            std::cout << "Done" << std::endl;
            return 0;
        }


      Библиотеку подключил вот так (CMakeList)
      Цитата

      cmake_minimum_required(VERSION 3.6)
      project(test_mysql)

      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -L\"C:/Program Files/MySQL/MySQL Server 5.7/lib\" -lmysqlclient")

      set(SOURCE_FILES main.cpp)

      set(MYSQL_DIR "C:/Program Files/MySQL/MySQL Server 5.7")

      include_directories(${MYSQL_DIR}/include)
      find_library(mysql NAMES libmysql PATHS ${MYSQL_DIR}/lib)

      add_executable(test_mysql ${SOURCE_FILES})

      target_link_libraries(test_mysql ${mysql})


        Попробуй вот так, может быть поможет:

        ExpandedWrap disabled
          #include <iostream>
          #include "mysql.h"
              
          int main() {
            MYSQL *mysql = mysql_init(NULL);
            mysql_close(mysql);
            std::cout << "Done" << std::endl;
            return 0;
          }
        Мои программные ништякиhttp://majestio.info
          Цитата JoeUser @
          Попробуй вот так, может быть поможет:
          ExpandedWrap disabled
            #include <iostream>
            #include "mysql.h"
                
            int main() {
              MYSQL *mysql = mysql_init(NULL);
              std::cout << "Done" << std::endl;
              return 0;
            }

          спасибо за ответ!
          Я так пробовал...
          пробовал по всякому, что есть в гуугле и тут на форуме примеры.
          постоянно одна и та же ошибка

          может библиотеку не так подключил...
          Сообщение отредактировано: iPrior -
            Цитата JoeUser @
            mysql_close(mysql);

            Это пробовал до выхода из программы вставлять?
            Мои программные ништякиhttp://majestio.info
              Цитата JoeUser @
              Цитата JoeUser @
              mysql_close(mysql);

              Это пробовал до выхода из программы вставлять?

              пробовал... даже вот сейчас перегрузил комп на всякий случай :huh:
              попробую наверное на линуксе скомпилить и запустить...
                а сервер то мускуля запущен? :D
                "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                -------------------------------------------------------------------------------------------
                "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                  Цитата Cfon @
                  а сервер то мускуля запущен? :D

                  а то как же! =)
                  только до коннекта дело не доходит =(

                  всё стопится на..:
                  Цитата
                  MYSQL *mysql_init(MYSQL *mysql) - Выделяет или инициализирует объект MYSQL, подходящий для функции mysql_real_connect()
                  Сообщение отредактировано: iPrior -
                    ТОГДА ТАК ПОПРОБУЙ :D

                    MYSQL mysql;
                    mysql_init(&mysql);
                    "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                    "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                    -------------------------------------------------------------------------------------------
                    "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                      Цитата Cfon @
                      ТОГДА ТАК ПОПРОБУЙ :D

                      MYSQL mysql;
                      mysql_init(&mysql);

                      Пробовал, но еще попробую, только поставлю мускл 5.5 и 32 битную...
                        кстати а в какой системе испытывал?
                        я например в минг 5.3+мускул 5.7+винда10

                        Добавлено
                        да код загонял в Notepad++ :)
                        "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                        "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                        -------------------------------------------------------------------------------------------
                        "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                          Цитата Cfon @
                          кстати а в какой системе испытывал?
                          я например в минг 5.3+мускул 5.7+винда10

                          Добавлено
                          да код загонял в Notepad++ :)

                          Винда 10-я.... неохота было линукс разворачивать, думал так код попишу, потом на виртуалке просто скомпилирую и запущу


                          Да, с версией MySQL 5.5 ошибка исчезла, но появилось куча новых =)
                          тему пока не буду закрывать, вдруг не разберусь
                          Сообщение отредактировано: iPrior -
                            Цитата iPrior @
                            неохота было линукс разворачивать

                            Очередной раз рекомендую - Manjaro. Под вмварей ставится за 7-10 мин, чаю не успеешь испить.
                            Мои программные ништякиhttp://majestio.info
                              Цитата JoeUser @
                              Цитата iPrior @
                              неохота было линукс разворачивать

                              Очередной раз рекомендую - Manjaro. Под вмварей ставится за 7-10 мин, чаю не успеешь испить.

                              Да я на вагранте за минуту подниму сервер на линуксе... только код пишу под виндой, ну и запускать хотелось сразу из IDE, а не через терминал компилить :)
                              Да и хотелось кросс-платформено писать :D

                              Добавлено
                              Эта ошибка (exit code -1073741515 (0xC0000135)) на 64-х битной версии библиотеки
                              На 32-х битной линковщик ругается

                              буду копать дальше...
                                Цитата iPrior @
                                Да и хотелось кросс-платформено писать

                                Тут и тут
                                Мои программные ништякиhttp://majestio.info
                                  Цитата JoeUser @
                                  Цитата iPrior @
                                  Да и хотелось кросс-платформено писать

                                  Тут и тут

                                  Спасибо, почитаю =)
                                  Правда до QT мне еще очень далеко =)

                                  Возвращаясь к своей проблеме...
                                  Нарыл на форумах что вроде как libmysql, что идет в комплекте, не работает с MinGW и надо делать какие то, на мой взгляд, шаманские пляски:
                                  Цитата
                                  download mysql-connector-c-noinstall-6.0.2-win32.zip from http://mysql.com
                                  extract it to MinGW root directory
                                  copy /lib/libmysql.dll to your working source directory (optional)

                                  WARNING: include <winsock.h> at the 1st line of your source code

                                  1. pexports libmysql.dll > libmysql.def
                                  2. dlltool -k --input-def libmysql.def --dllname libmysql.dll --output-lib libmysql.a
                                  4. gcc test.c -o test -L . -lmysql

                                  Edit libmysql.def
                                  - replace mysql_init w/ mysql_init@4
                                  (*) repeat this step for all mysql functions you'll plan to use.
                                  (*) you'll notice the @* from gcc error ouput (step 4)
                                    короче старик приатачь сюда свой тестовый проект, гадать тяжко :)
                                    и на чем лабаешь?
                                    "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                    "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                    -------------------------------------------------------------------------------------------
                                    "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                      Цитата Cfon @
                                      короче старик приатачь сюда свой тестовый проект, гадать тяжко :)
                                      и на чем лабаешь?

                                      Дык я в первом сообщении выложил весь "проект" =)
                                      MySQL =| (сообщение #3689399)

                                      всего два файла: CMakeList.txt & main.cpp

                                      "и на чем лабаешь?" - IDE имеется в виду?

                                      ОС Windows 10
                                      IDE CLion (jetbrains) + CMake + MinGW
                                        Цитата iPrior @
                                        Дык я в первом сообщении выложил весь "проект" =)
                                        всего два файла: CMakeList.txt & main.cpp

                                        ОС Windows 10
                                        IDE CLion (jetbrains) + CMake + MinGW

                                        да нет ты не понял нужно окружение, ну может что не так подключено :)

                                        например у меня в Notepade++ такая строка компиляции:
                                        ExpandedWrap disabled
                                          g++ "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).exe" -std=c++14 "-IE:/MySQL/mysql-5.7.15/include/" "-LE:/MySQL/mysql-5.7.15/lib/" -llibmysql

                                        все пашет :D
                                        "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                        "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                        -------------------------------------------------------------------------------------------
                                        "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                          Цитата Cfon @
                                          да нет ты не понял нужно окружение, ну может что не так подключено :)

                                          например у меня в Notepade++ такая строка компиляции:
                                          ExpandedWrap disabled
                                            g++ "$(FULL_CURRENT_PATH)" -o "$(NAME_PART).exe" -std=c++14 "-IE:/MySQL/mysql-5.7.15/include/" "-LE:/MySQL/mysql-5.7.15/lib/" -llibmysql

                                          все пашет :D

                                          а компилятор у тебя какой?
                                          Я пробовал MinGW & TDM-GCC
                                            Цитата iPrior @
                                            а компилятор у тебя какой?
                                            Я пробовал MinGW & TDM-GCC

                                            MinGW 5.3 :)
                                            "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                            "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                            -------------------------------------------------------------------------------------------
                                            "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                              Цитата Cfon @
                                              Цитата iPrior @
                                              а компилятор у тебя какой?
                                              Я пробовал MinGW & TDM-GCC

                                              MinGW 5.3 :)

                                              а MySQL Connector-C ты берешь что под Windows || Linux?
                                              Я что-то уже совсем запутался =(
                                                Я сдвинулся! ... или двинулся? О_о

                                                В общем поставил CygWin
                                                Скачал Connector/C 6.0.2 Windows (x86, 64-bit)

                                                Теперь линковщик ругается:
                                                Цитата
                                                C:\Users\user\.CLion2016.2\system\cygwin_cmake\bin\cmake.exe --build C:\Users\user\.CLion2016.2\system\cmake\generated\untitled1-8917aa51\8917aa51\Debug --target all -- -j 8
                                                [ 50%] Linking CXX executable untitled1.exe
                                                /cygdrive/c/Users/user/ClionProjects/untitled1/MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_mysql_close' defined in .idata$5 section in /cygdrive/c/Users/user/ClionProjects/untitled1/MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b)
                                                /cygdrive/c/Users/user/ClionProjects/untitled1/MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_mysql_init' defined in .idata$5 section in /cygdrive/c/Users/user/ClionProjects/untitled1/MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b)
                                                collect2: error: ld returned 1 exit status
                                                make[2]: *** [CMakeFiles/untitled1.dir/build.make:95: untitled1.exe] Error 1
                                                make[1]: *** [CMakeFiles/Makefile2:68: CMakeFiles/untitled1.dir/all] Error 2
                                                make: *** [Makefile:84: all] Error 2


                                                код остался прежним:
                                                ExpandedWrap disabled
                                                  #include <iostream>
                                                  #include "mysql.h"
                                                   
                                                  int main() {
                                                      MYSQL *mysql;
                                                      mysql = mysql_init(NULL);
                                                      mysql_close(mysql);
                                                   
                                                      std::cout << "Done" << std::endl;
                                                      return 0;
                                                  }


                                                CMakeList.txt вроде тоже:
                                                ExpandedWrap disabled
                                                  cmake_minimum_required(VERSION 3.6)
                                                  project(untitled1)
                                                   
                                                  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
                                                  set(MYSQL_DIR "${PROJECT_SOURCE_DIR}/MySQL64")
                                                   
                                                  include_directories(${MYSQL_DIR}/include)
                                                  link_directories(${MYSQL_DIR}/lib libmysql)
                                                   
                                                  set(SOURCE_FILES main.cpp)
                                                  add_executable(untitled1 ${SOURCE_FILES})
                                                  target_link_libraries(untitled1 libmysql)


                                                Вручную тоже не очень компилируется:
                                                Цитата

                                                C:\Users\user\ClionProjects\untitled1>g++ main.cpp -o main.exe -std=c++14 -I./MySQL64/include -L./MySQL64/lib -llibmysql
                                                ./MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_mysql_close' defined in .idata$5 section in ./MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b)
                                                ./MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol `__imp_mysql_init' defined in .idata$5 section in ./MySQL64/lib/libmysql.lib(LIBMYSQL.dll.b)
                                                collect2: error: ld returned 1 exit status
                                                Сообщение отредактировано: iPrior -
                                                  Цитата iPrior @
                                                  а MySQL Connector-C ты берешь что под Windows || Linux?
                                                  Я что-то уже совсем запутался =(

                                                  я собрал MySQL 5.7 из сорцов CMake'ом под Windows, там уже был libmysql.dll (MySQL Connector-C) :)
                                                  "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                                  "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                                  -------------------------------------------------------------------------------------------
                                                  "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                                    Цитата Cfon @
                                                    я собрал MySQL 5.7 из сорцов CMake'ом под Windows, там уже был libmysql.dll (MySQL Connector-C) :)

                                                    Спасибо, мне стало хуже :D
                                                      Цитата iPrior @
                                                      Спасибо, мне стало хуже :D

                                                      :( я не виноват :D
                                                      "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                                      "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                                      -------------------------------------------------------------------------------------------
                                                      "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                                        Цитата Cfon @
                                                        :( я не виноват :D

                                                        а MinGW у тебя 32 или 64 ?
                                                          Цитата iPrior @
                                                          а MinGW у тебя 32 или 64 ?

                                                          32 :)
                                                          "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                                          "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                                          -------------------------------------------------------------------------------------------
                                                          "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                                            Цитата Cfon @
                                                            Цитата iPrior @
                                                            а MinGW у тебя 32 или 64 ?

                                                            32 :)

                                                            <_< угу... наверное установлю ка я 32-х битный cygwin
                                                              ща точно не помню, но вроде вначале я ставил мускул 5.7 из бинарника под виндос, но там вроде были проблем линковки с libmysql.dll и я через какие то утилиты создавал liblibmysql.a линуксовую библу через которую уже все было пучком. :D
                                                              "Многие ошибочно полагают, что JavaScript это некое подобие Java и они глубоко заблуждаются.. это асма для вэб!" :D
                                                              "JavaScript is Lisp in C's clothing" © Douglas Crockford :victory:
                                                              -------------------------------------------------------------------------------------------
                                                              "Программирование БД в действии: подход имбицила" :D https://github.com/Cfon/MFCSQLite3Demo
                                                                В общем не понятно в чем проблема...
                                                                Ошибка "R_X86_64_32" вроде, как я понял, связана с архитектурой (32/64) - её решить не смог.
                                                                Под MinGW библиотеку надо пересобирать с "шаманскими плясками" я писал об этом тут: MySQL =| (сообщение #3689488)
                                                                Под VirtualBox выпадает ошибка сегментации =\

                                                                Проблему решил... да в общем она и не возникла, при следующих действиях:
                                                                Установил VMWare Workstation, как рекомендовал JoeUser.
                                                                Установил Ubuntu Desktop 16.04-64
                                                                Скачал Connector/C 6.1.6 Linux - Generic (glibc 2.5) (x86, 64-bit)

                                                                и собсно всё работает...

                                                                Код:
                                                                ExpandedWrap disabled
                                                                  #include <iostream>
                                                                  #include "mysql.h"
                                                                   
                                                                  int main() {
                                                                      MYSQL *conn;
                                                                      MYSQL_RES *res;
                                                                      MYSQL_ROW row;
                                                                   
                                                                      conn = mysql_init(NULL);
                                                                   
                                                                      /* Connect to database */
                                                                      if (!mysql_real_connect(conn, "127.0.0.1",
                                                                                              "root", "root", "mysql", 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 0;
                                                                  }


                                                                CMakeList.txt:
                                                                ExpandedWrap disabled
                                                                  cmake_minimum_required(VERSION 3.6)
                                                                  project(untitled)
                                                                   
                                                                  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
                                                                  set(MYSQL_DIR "${PROJECT_SOURCE_DIR}/MySQL")
                                                                   
                                                                  include_directories(${MYSQL_DIR}/include)
                                                                  link_directories(${MYSQL_DIR}/lib mysqlclient)
                                                                   
                                                                  set(SOURCE_FILES main.cpp)
                                                                  add_executable(untitled ${SOURCE_FILES})
                                                                  target_link_libraries(untitled mysqlclient)
                                                                  Винда 10-я.... неохота было линукс разворачивать, думал так код попишу, потом на виртуалке просто скомпилирую и запу

                                                                  Да, с версией MySQL 5.5 ошибка исчезла, но появилось куча новых =)
                                                                  тему пока не буду закрывать, вдруг не разберусь
                                                                  ege.org.ru ege.net.ru
                                                                  Сообщение отредактировано: katenka141 -
                                                                  Подпись выключена.
                                                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                  0 пользователей:


                                                                  Рейтинг@Mail.ru
                                                                  [ Script Execution time: 0,2394 ]   [ 18 queries used ]   [ Generated: 26.09.17, 19:58 GMT ]