我刚刚开始使用Visual Studio 2017以C ++编程,并连接到我的数据库。到目前为止一切正常。然后我想使用c ++ 17功能并意识到我需要升级编译器。
使用this blog通过以下命令将编译器升级到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)时,它将再次起作用。也许新的编译器没有正确安装。有关如何在Raspbian上安装GCC-8的说明非常有用。
这基本上是程序:
#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-堆栈选择帧16(gdb)1067-var-create-*“ argc”线程 'LSTGA.out'(0x5cfa)已退出,代码为0(0x0)。程序“有 以代码0(0x0)退出。
这是我直接通过SSH运行它时遇到的错误:
*`./LSTGA.out'中的错误:munmap_chunk():无效的指针:0x7ec3c50c * 中止
调用堆栈:
其他信息:
先谢谢了。 -思维