Mysql Connector / C ++ for Windows 2010 Express not compiling

SOLUTION: I decided to make a step-by-step guide for people who have the same problems. I don't know if this completely fixes everything, but it allows you to compile a piece of code that I provided. If there are any errors, please comment so that I can fix them. This is intended to help those who basically refused unsuccessful attempts, and, frankly, the whole process should have been documented. Sorry for the long post: P

STEP BY STEP FOR SETTING UP MYSQL CONNECTOR/C++ FOR 2010 MICROSOFT VISUAL C++ EXPRESS: FILES NEEDED: Windows x86 32 Bit ZIP: Connector/C++ -> http://dev.mysql.com/downloads/connector/cpp/ Windows X86 32 Bit ZIP: Connector/C -> http://dev.mysql.com/downloads/connector/c/ BOOST -> http://www.boost.org/users/download/ The reason why 62bit doesn't work is because you are using the express edition. After you have downloaded all those files, extract them. I keep mine in C (for ease of access). Now open up MVC++ 2010 EXPRESS. File -> New -> Project Win32 Console Application Next Check Empty project Finish Create your first .cpp. I call mine main.cpp Project -> Properties C/C++ -> General -> Additional Include Directories -> C:\mysql-connector-c++-noinstall-1.1.0-win32\mysql-connector-c++-noinstall-1.1.0-win32\include C/C++ -> General -> Additional Include Directories -> C:\mysql-connector-c++-noinstall-1.1.0-win32\mysql-connector-c++-noinstall-1.1.0-win32\include\cppconn C/C++ -> General -> Additional Include Directories -> C:\boost_1_49_0 Linker -> General -> Additional Library Directories -> C:\mysql-connector-c++-noinstall-1.1.0-win32\mysql-connector-c++-noinstall-1.1.0-win32\lib Linker -> General -> Additional Library Directories -> C:\mysql-connector-c-noinstall-6.0.2-win32\mysql-connector-c-noinstall-6.0.2-win32\lib The reason why we downloaded the Connector/C is because it has two files we need: libmysql.lib and libmysql.dll Linker -> Input -> Additional Dependencies -> mysqlcppconn.lib Linker -> Input -> Additional Dependencies -> libmysql.lib If you change to Release, youll have to enter in the information again. In your main.cpp place the following code and build it: 

=

 /* Copyright 2008, 2010, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. There are special exceptions to the terms and conditions of the GPL as it is applied to this software. View the full text of the exception in file EXCEPTIONS-CONNECTOR-C++ in the directory of this software distribution. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* Standard C++ includes */ #include <stdlib.h> #include <iostream> /* Include directly the different headers from cppconn/ and mysql_driver.h + mysql_util.h (and mysql_connection.h). This will reduce your build time! */ #include "mysql_connection.h" #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> using namespace std; int main(void) { cout << endl; cout << "Running 'SELECT 'Hello World!' Β» AS _message'..." << endl; try { sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; /* Create a connection */ driver = get_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "YOUR USERNAME", "YOUR PASSWORD"); /* Connect to the MySQL test database */ con->setSchema("YOUR DATABASE"); stmt = con->createStatement(); res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); while (res->next()) { cout << "\t... MySQL replies: "; /* Access column data by alias or column name */ cout << res->getString("_message") << endl; cout << "\t... MySQL says it again: "; /* Access column fata by numeric offset, 1 is the first column */ cout << res->getString(1) << endl; } delete res; delete stmt; delete con; } catch (sql::SQLException &e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line Β»" << __LINE__ << endl; cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; } cout << endl; int a; // hangs cin >> a; return EXIT_SUCCESS; } 

You should get errors for int8_t. Double-click the config.h file located at: c: \ mysql-connector-C ++ - noinstall-1.1.0-win32 \ mysql-connector-C ++ - noinstall-1.1.0-win32 \ include \ cppconn \ config.h. Double-click on it to raise it. Now just comment out all typedefs, there should only be 8. Place libmysql.dll (inside Connector / C) and mysqlcppconn.dll (inside Connector / C ++) inside the folder into which the compiler displays your assembly. Having finished saving and starting.

OLD POSTS DONT LOOK

I followed the steps on this site verbatim: http://blog.ulf-wendel.de/?p=215 But I still get a compilation error. I'm not new to linking libraries or including directories, but I could use a new superhero who created applications with mysql connector / C ++ using Express 2010 ... to make a simple KISS example. I've been grinding my teeth all day. Example Source: http://www.tidytutorials.com/2009/07/mysql-connector-c-example-windows-clexe.html (with a modified database)

 1>main.obj : error LNK2019: unresolved external symbol __imp__get_driver_instance referenced in function _main #include <stdlib.h> #include <iostream> using namespace std; #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> #include <cppconn/prepared_statement.h> int main(){ sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; sql::PreparedStatement *pstmt; try{ driver = get_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "root", "root"); con->setSchema("foxlogin"); stmt = con->createStatement(); stmt->execute("insert into example values(4,'four'),(5, 'five')"); delete stmt; pstmt = con->prepareStatement("select * from example"); res = pstmt->executeQuery(); while (res->next()) std::cout<<res->getInt("id")<<" "<<res->getString("data")<<std::endl; delete res; delete pstmt; pstmt = con->prepareStatement("delete from example where id=?"); pstmt->setInt(1,4); pstmt->executeUpdate(); pstmt->setInt(1,5); pstmt->executeUpdate(); delete pstmt; delete con; }catch(sql::SQLException &e){ std::cout<<e.what(); } int a; // hang cin >> a; return 0; } 

UPDATE: I also stuck with this: http://forums.mysql.com/read.php?167,492097,492097#msg-492097 I even used C ++ and C-connectors (separate assemblies) along with BOTH tests with each 64 and 32-bit versions (4 tests in total). I downloaded boost and linked it. The new code that I use, I will publish below, which will be published on the official mysql website. Both assemblies produce AVAILABLE errors.

 /* Copyright 2008, 2010, Oracle and/or its affiliates. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 of the License. There are special exceptions to the terms and conditions of the GPL as it is applied to this software. View the full text of the exception in file EXCEPTIONS-CONNECTOR-C++ in the directory of this software distribution. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /* Standard C++ includes */ #include <stdlib.h> #include <iostream> /* Include directly the different headers from cppconn/ and mysql_driver.h + mysql_util.h (and mysql_connection.h). This will reduce your build time! */ #include "mysql_connection.h" #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> using namespace std; int main(void) { cout << endl; cout << "Running 'SELECT 'Hello World!' Β» AS _message'..." << endl; try { sql::Driver *driver; sql::Connection *con; sql::Statement *stmt; sql::ResultSet *res; /* Create a connection */ driver = get_driver_instance(); con = driver->connect("tcp://127.0.0.1:3306", "root", "root"); /* Connect to the MySQL test database */ con->setSchema("test"); stmt = con->createStatement(); res = stmt->executeQuery("SELECT 'Hello World!' AS _message"); while (res->next()) { cout << "\t... MySQL replies: "; /* Access column data by alias or column name */ cout << res->getString("_message") << endl; cout << "\t... MySQL says it again: "; /* Access column fata by numeric offset, 1 is the first column */ cout << res->getString(1) << endl; } delete res; delete stmt; delete con; } catch (sql::SQLException &e) { cout << "# ERR: SQLException in " << __FILE__; cout << "(" << __FUNCTION__ << ") on line " Β» << __LINE__ << endl; cout << "# ERR: " << e.what(); cout << " (MySQL error code: " << e.getErrorCode(); cout << ", SQLState: " << e.getSQLState() << " )" << endl; } cout << endl; return EXIT_SUCCESS; } 

CREATE ERRORS FOR TESTING 64: (I mean a 32-bit build error test if you need me to provide)

  1>------ Build started: Project: erthwrthj, Configuration: Debug Win32 ------ 1> main.cpp 1>c:\mysql c++ 64\include\cppconn\sqlstring.h(36): warning C4251: 'sql::SQLString::realStr' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'sql::SQLString' 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char>, 1> _Ax=std::allocator<char> 1> ] 1>c:\mysql c++ 64\include\mysql_connection.h(156): warning C4251: 'sql::mysql::MySQL_Connection::proxy' : class 'boost::shared_ptr<T>' needs to have dll-interface to be used by clients of class 'sql::mysql::MySQL_Connection' 1> with 1> [ 1> T=sql::mysql::NativeAPI::NativeConnectionWrapper 1> ] 1>c:\mysql c++ 64\include\cppconn\exception.h(59): warning C4251: 'sql::SQLException::sql_state' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'sql::SQLException' 1> with 1> [ 1> _Elem=char, 1> _Traits=std::char_traits<char>, 1> _Ax=std::allocator<char> 1> ] 1>c:\mysql c++ 64\include\cppconn\config.h(60): error C2371: 'int8_t' : redefinition; different basic types 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(17) : see declaration of 'int8_t' 1>c:\mysql c++ 64\include\cppconn\config.h(60): error C2371: 'int8_t' : redefinition; different basic types 1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\stdint.h(17) : see declaration of 'int8_t' 1>c:\users\null\documents\visual studio 2010\projects\erthwrthj\erthwrthj\main.cpp(74): error C2146: syntax error : missing ';' before identifier 'Β»' 1>c:\users\null\documents\visual studio 2010\projects\erthwrthj\erthwrthj\main.cpp(74): error C2065: 'Β»' : undeclared identifier ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Help will be appreciated!

UPDATE 2: view_findpost_p_1474626 "> http://www.dreamincode.net/forums/topic/253647-question-regarding-connecting-to-mysql-50-using-visual-studio-2010/page_view_findpost_p_1474626 This guy seems to think that this is due to the fact that config.h conflicts with stdint.h when compiling because there is #typedef in config.h for int8_t. There must be a solution to this. I even take any other libraries (free) that can connect to the local MySQL database, but I really want to understand this to help everyone.

+7
source share
1 answer

Since there are many questions about the C ++ and MySQL connector, and it is very difficult to get it working, I will answer this question even if it were asked as 1 year ago.

The solution is quite simple, the only thing you need to do is comment out all the typedef in the cppcon / config.h file

0
source

All Articles