Я не могу подключиться к моей MySQL базе данных в C с CLion - PullRequest
0 голосов
/ 12 марта 2020

Это в названии, я хочу создать программу в C, которая подключается к моей MySQL базе данных, которая размещается локально с MAMP, я использую в качестве IDE CLion и я на Windows. Я также использую MySQL API, который я установил в своем каталоге MinGW

. Для этого я использую этот код:

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

int main(int argc, char **argv)
{
    printf("\nhello");
    MYSQL *con = mysql_init(NULL);

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

    printf("\ntest");
    if (mysql_real_connect(con, "localhost", "root", "root",
                           "perfect-concierge", 3307, NULL, 0) == NULL)
    {
        fprintf(stderr, "%s\n", mysql_error(con));
        mysql_close(con);
        exit(1);
    }
    printf("\ntest2");
    if (mysql_query(con, "CREATE DATABASE testdb"))
    {
        fprintf(stderr, "%s\n", mysql_error(con));
        mysql_close(con);
        exit(1);
    }
    printf("\ntest3");
    mysql_close(con);
    exit(0);
}

"Тесты" существуют, чтобы увидеть, где будут ошибка. И я использую этот CMakeFile.txt:

cmake_minimum_required(VERSION 3.12)
project(Test-MySQL C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "-Wall")
add_library(libmysql SHARED IMPORTED)
set_target_properties(
        libmysql
        PROPERTIES LINKER_LANGUAGE C
        IMPORTED_IMPLIB "C:/MinGW/lib/libmysqlclient.a")
link_directories("C:/MinGW/lib")
add_executable(Test-MySQL main.c)
target_link_libraries(Test-MySQL libmysql)

(PS: не я сделал этот CMakeFile, а тот, кто дал мне этот пример подключения к базе данных MySQL)

Но когда я выполняю этот код, программа хорошо компилируется, запускается, и я получаю эту ошибку:

Process finished with exit code -1073741515 (0xC0000135)

Без чего-либо еще. Я пытался просто изменить основную функцию и просто оставить printf("\nhello");, и программа работала корректно, но просто добавьте MYSQL *con = mysql_init(NULL);, отправьте мне эту ошибку еще раз

Заранее спасибо, что потратили время, чтобы помочь мне .

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Ошибка

Process finished with exit code -1073741515 (0xC0000135)

означает, что некоторые .dll не могут быть найдены при запуске исполняемого файла (в время выполнения ).

На Windows вам нужно либо

  1. иметь каталог с .dll (C:/MinGW/lib в вашем случае), чтобы быть в переменной PATH.
  2. иметь рядом .dll исполняемый файл (в том же каталоге). См. в этом вопросе о том, как этого добиться в CMake.

Обратите внимание, что link_directories (и аналогичные) влияет только на поиск в библиотеке во время связывание stage и не помогает при runtime .

0 голосов
/ 12 марта 2020

MAMP - это Macinto sh, Apache, MySQL, Perl / Python / PHP. Это Apache в качестве веб-сервера, MySQL в качестве сервера базы данных и Perl / Python / PHP в качестве модуля для веб-сервера. Более того, важно то, что MAMP совместим с MacOS / Macinto sh.

. В качестве вашего описания вы используете Windows в качестве операционной системы и C в качестве языка вашей программы. Так что вы наверняка не сможете использовать MAMP в качестве сервера.

В качестве альтернативы вам нужно найти любой сервер, совместимый для вашей Windows ОС и вашего C в качестве языка программирования.

Надеюсь, это поможет!

...