Mysql connector/C++for windows 2010 express未编译

Mysql connector/C++for windows 2010 express未编译,c++,mysql,mysql-connector,C++,Mysql,Mysql Connector,解决方案:我决定为有相同问题的人做一个循序渐进的指南。我不知道这是否完全修复了所有问题,但它确实可以让您编译我将提供的代码片段。如果有任何错误,请评论,以便我可以修复它们。这是为了帮助那些在尝试失败后大多放弃的人,坦率地说,整个过程都应该记录在案。抱歉发了这么长的帖子:P STEP BY STEP FOR SETTING UP MYSQL CONNECTOR/C++ FOR 2010 MICROSOFT VISUAL C++ EXPRESS: FILES NEEDED: Windows x86

解决方案:我决定为有相同问题的人做一个循序渐进的指南。我不知道这是否完全修复了所有问题,但它确实可以让您编译我将提供的代码片段。如果有任何错误,请评论,以便我可以修复它们。这是为了帮助那些在尝试失败后大多放弃的人,坦率地说,整个过程都应该记录在案。抱歉发了这么长的帖子: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:
=

您应该会得到int8\t的错误。双击位于以下位置的config.h:c:\mysql-connector-c++-noinstall-1.1.0-win32\mysql-connector-c++-noinstall-1.1.0-win32\include\cppcon\config.h。双击它以打开它。现在只需注释掉所有的typedef,应该只有8个。将libmysql.dllinside和mysqlcppconn.dllinside放置在编译器将生成输出到的文件夹中。完成后保存并运行

老帖子不好看

我在本网站上一字不差地遵循了以下步骤: 但我仍然得到一个编译错误。我对链接库或包含目录并不陌生,但我可以使用一个新的超级英雄,他使用mysql connector/c++和2010 express制作了应用程序。。。举个简单的吻的例子。我一整天都在磨牙。 示例来源:数据库已更改

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:我也遵循了:我甚至使用C++和C连接器,分别与每个64个测试和32位版本进行了单独的构建,共有4个测试。我已经下载了boost并链接了它。我正在使用的新代码将发布在下面,它来自mysql官方网站。两个版本都会产生相同的错误

/* 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;
}
64位测试的生成错误:如果需要,我将提供32位生成错误测试

   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 ==========
谢谢你的帮助


更新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 这家伙似乎认为这是因为config.h在编译时与stdint.h冲突,因为在config.h中有一个int8\t的typedef。必须有一个解决办法。我甚至会把任何其他图书馆的免费连接到本地MySQL数据库,但我真的很想找出这一点来帮助大家。< /P> < P>由于C++和MySQL连接器存在很多问题,而且很难使它工作,所以我甚至会在1年前提出这个问题。
解决方案非常简单,您只需对cppcon/config.h文件中的所有typedef进行注释

是否尝试向libmysql.lib添加额外的库依赖项?你可以从这里下载:是的。这是我第二次尝试让它工作。第二次我输了。62位不工作的原因是输出的复制粘贴?微软有人写了这样一个不正确的声明,我并不感到惊讶,但我想知道。。。为什么你的问题从解决方案开始?如果你有一个有效的答案,那么你应该为自己的问题写一个答案。
   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 ==========