Я только начал программировать на C ++ с использованием Visual Studio 2017 и подключился к своей базе данных. Пока все работало нормально. Затем я захотел использовать функцию c ++ 17 и понял, что мне нужно обновить компилятор.
После обновления моего компилятора до g ++ 8.1.0 с использованием этого блога с этими командами (и большим количеством проб и ошибок):
git clone https://bitbucket.org/sol_prog/raspberry-pi-gcc-binary.git
cd raspberry-pi-gcc-binary
tar xf gcc-8.1.0.tar.bz2
mv gcc-8.1.0 /usr/bin
cd ..
rm -r raspberry-pi-gcc-binary
rm /usr/bin/gcc
rm /usr/bin/g++
ln -s /usr/bin/gcc-8.1.0/bin/gcc-8.1.0 /usr/bin/gcc
ln -s /usr/bin/gcc-8.1.0/bin/g++-8.1.0 /usr/bin/g++
# After getting the error "GLIBCXX_3.4.21 not found" I did the following:
rm /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
# I don't know if this (next line) was necessary
rm /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.22
ln -s /usr/bin/gcc-8.1.0/lib/libstdc++.so.6.0.25 /usr/lib/arm-linux-gnueabihf/libstdc++.so.6
Теперь программа компилируется, но когда я ее выполняю, происходит сбой. Когда я переключаюсь на старый компилятор (g ++ - 4.9), он снова работает. Возможно, новый компилятор установлен неправильно. Инструкции по установке GCC-8 на Raspbian были бы отличными.
Это в основном программа:
#include<string>
#include<stdlib.h>
#include<iostream>
#include<exception>
#include<mysql_driver.h> //OR #include<cppconn/driver.h>
#include<mysql_connection.h> //OR #include<cppconn/connection.h>
sql::mysql::MySQL_Driver* driver; //OR sql::Driver*
sql::Connection* conn;
int main(const int argc, const char* argv[]) {
try {
driver = sql::mysql::get_driver_instance(); //OR get_driver_instance();
conn = driver->connect("tcp://127.0.0.1:3306", "root", "MY_PW");
conn->setSchema("MY_DB");
} catch (std::exception &e) {
//err("Failed to connect to the database.", e);
}
}
И это ошибка, которую я получаю в Visual studio:
Прервано (gdb) 1055-var-create - * "__size" (gdb)
1066-stack-select-frame 16 (GDB) 1067-var-create - * "argc" Поток
«LSTGA.out» (0x5cfa) завершил работу с кодом 0 (0x0). Программа имеет
выход с кодом 0 (0x0).
И это ошибка, которую я получаю при запуске напрямую через SSH:
* Ошибка в `./LSTGA.out ': munmap_chunk (): неверный указатель: 0x7ec3c50c *
Отменено
Стек вызовов:
Дополнительная информация:
- Предыдущий компилятор: gcc-4.9 / g ++ - 4.9 (все еще присутствует)
- Новый компилятор: gcc-8.1.0 / g ++ - 8.1.0
- Предыдущий LIBSTDC ++: 6.0.22 (удален)
- Новый LIBSTDC ++: 6.0.25
- Удаленная машина: Raspberry Pi 2b
- Удаленная ОС: Raspbian
- Локальная ОС: Windows 10
- Visual studio Community 2017 15.8.8
Заранее спасибо. -Minding