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:
=
#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;
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.
#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.