2017-11-05 16 views
0

C++の初心者がいます。エラーmysqlcppconnがあるC++スクリプトがありません(このようなファイルはありません)

Raspi 3のC++開発環境を準備しています。 これにはC++(Windows上のnetbeans IDE、Raspi上のgeany)、mysql(mariDB)、QTが含まれます。

最初のステップは、raspiの簡単なスクリプト "hello world"で、cppconnの助けを借りてビルドを行いました。 2番目のステップは、Netbeans IDEのウィンドウで同じスクリプトを作成し、それをlocaly/remoteでビルドすることでした。

私はこの単純なスクリプトがあります:ビルド中に

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/* 
* File: main.cpp 
* Author: marek 
* 
* Created on 1. listopadu 2017, 22:33 
*/ 

#include <iostream> 
#include <cstdlib> 
#include <stdlib.h> 

/* 
    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 <mysql_driver.h> 

#include <cppconn/driver.h> 
#include <cppconn/exception.h> 
#include <cppconn/resultset.h> 
#include <cppconn/statement.h> 



using namespace std; 

/* 
* 
*/ 
int main(int argc, char** argv) { 

cout << endl; 
cout << "running select as a messege" << 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://10.0.0.6:3306", "root", "FTQERJSC"); 

    /* Connect to the MySQL test database */ 
    con->setSchema("mysql"); 

    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 data 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; 




std::cout << "hello world pc 5 mysql\n"; 

#ifdef __linux__ 
    std::cout << "__linux__\n"; 
#elif defined(__unix__) 
    std::cout << "__unix__\n"; 
#elif defined(_WIN64) 
    std::cout << "_WIN64\n"; 
#elif defined(_WIN32) 
    std::cout << "_WIN32\n"; 
#endif 


#if __WORDSIZE == 64 
    std::cout << "64 bit\n"; 
#else 
    std::cout << "32 bit\n"; 
#endif 

    return 0; 
} 

を私はこれらのエラーを取得:C++コーディングのためのMySQLを設定すると

cd 'C:\Users\marek\Documents\c++ projects\hello-world-7-pc-mysql' 
C:\msys\1.0\bin\make.exe -f Makefile CONF=Debug 
"/C/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf 
make.exe[1]: Entering directory `/c/Users/marek/Documents/c++ projects/hello-world-7-pc-mysql' 
"/C/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW_Qt-Windows/hello-world-7-pc-mysql.exe 
make.exe[2]: Entering directory `/c/Users/marek/Documents/c++ projects/hello-world-7-pc-mysql' 
mkdir -p dist/Debug/MinGW_Qt-Windows 
g++  -o dist/Debug/MinGW_Qt-Windows/hello-world-7-pc-mysql build/Debug/MinGW_Qt-Windows/main.o -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/lib -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/include/cppconn -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/include -lmysqlcppconn-static -lmysqlcppconn "/C/Program Files/MySQL/MySQL Connector C++ 1.1.9/lib/opt/mysqlcppconn-static.lib" "/C/Program Files/MySQL/MySQL Connector C++ 1.1.9/lib/opt/mysqlcppconn.lib" -lmysqlcppconn 
c:/Qt/Qt5.9.2/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn-static 
c:/Qt/Qt5.9.2/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn 
c:/Qt/Qt5.9.2/Tools/mingw530_32/bin/../lib/gcc/i686-w64-mingw32/5.3.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn 
collect2.exe: error: ld returned 1 exit status 
make.exe[2]: *** [dist/Debug/MinGW_Qt-Windows/hello-world-7-pc-mysql.exe] Error 1 
make.exe[2]: Leaving directory `/c/Users/marek/Documents/c++ projects/hello-world-7-pc-mysql' 
make.exe[1]: *** [.build-conf] Error 2 
make.exe[1]: Leaving directory `/c/Users/marek/Documents/c++ projects/hello-world-7-pc-mysql' 
make.exe": *** [.build-impl] Error 2 

BUILD FAILED (exit value 2, total time: 858ms) 

ば完全に挫折。

アドバイスをしてください:)

は、 マレク

答えて

2

をありがとう、私はあなたのコマンドラインと読みやすくするために、あなたのエラーメッセージが(特に私は改行を入れ、そしてldへのパスを正規化した)再フォーマットしました。

g++ -o dist/Debug/MinGW_Qt-Windows/hello-world-7-pc-mysql \ 
    build/Debug/MinGW_Qt-Windows/main.o \ 
    -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/lib \ 
    -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/include/cppconn \ 
    -L/C/Program\ Files/MySQL/MySQL\ Connector C++\ 1.1.9/include \ 
    -lmysqlcppconn-static \ 
    -lmysqlcppconn \ 
    "/C/Program Files/MySQL/MySQL Connector C++ 1.1.9/lib/opt/mysqlcppconn-static.lib" \ 
    "/C/Program Files/MySQL/MySQL Connector C++ 1.1.9/lib/opt/mysqlcppconn.lib" \ 
    -lmysqlcppconn 
c:/Qt/Qt5.9.2/Tools/i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn-static 
c:/Qt/Qt5.9.2/Tools/i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn 
c:/Qt/Qt5.9.2/Tools/i686-w64-mingw32/bin/ld.exe: cannot find -lmysqlcppconn 

言うべき最初の事はldファイルが-lmysqlconnを呼び出す見つけるために失敗しているということです。これは非常に奇妙なことです。通常、-lは、タイプ.aまたは.solibmysqlconnというライブラリをロードします。しかし、あなたのコマンドラインについて非常に奇妙なことがいくつかあります:

はまず-Lライブラリ(.libファイル、.soが、.A、.dllファイル)を検索する場所を指定するコマンドラインオプションである - なぜですあなたはincludeのディレクトリを指定していますか?

第2に、-lmysqlconn-static-lmysqlconnの両方を指定するのはなぜですか?静的ライブラリまたは動的ライブラリが必要です。

第3に、なぜライブラリ名(/C/...行内)を明示的に指定しようとしていますか?

第4に、-lmysqlcppconnを2回指定する理由を教えてください。

私はあなたがのようなものにするためのコマンドラインを変更する必要があると思う:

g++ -o dist/Debug/MinGW_Qt-Windows/hello-world-7-pc-mysql \ 
    -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.9/lib \ 
    -lmysqlcppconn \ 
    build/Debug/MinGW_Qt-Windows/main.o 

最後に、私はあなたが慎重にQtのチュートリアルを通読する必要があると思います。現時点では、あなたはちょうど逃げているようです。

+0

あなたのコメントに基づいて、NetBeansの設定をクリーンアップすることができました。私のビルドは次のエラーで終了します: g ++ -c -g -I/C/Program Files/boost/boost_1_65_1 -include/C/Program/Files/MySQL/MySQL \ Connector \ C++ \ 1.1.9/include/mysql_connection.h -MMD -MP -MF "ビルド/デバッグ/ MinGW-Windows/main.od" -oビルド/デバッグ/ MinGW-Windows/main.o main.cpp からのファイルに含まれる:31 :0: c:/ Program Files/MySQL/MySQLコネクタC++ 1.1。9 /インクルード/ mysql_connection.h:30:32:致命的なエラー:cppconn/connection.h:そのようなファイルやディレクトリがありません #include CZBios

+0

私の質問はなぜですか?パスc:/ Program Files/MySQL/MySQL Connector C++ 1.1.9/include /フォルダー "cppconn"で、 "boost"フォルダーもコピーしました。再帰が含まれているか何か問題があります:/この環境を設定するのは地獄です。本当に。 – CZBios

+0

を次の手順でインクルードし、「C:/ Program Files/boost/boost_1_65_1」、「C:/ Program Files/MySQL/MySQL Connector C++ 1.1.9/include」のようなディレクトリを含むコンパイラ設定にディレクトリをインクルードします。 g ++ -c -g -I/C/Program \ Files/boost/boost_1_65_1 -I/C/Program \ Files/MySQL/MySQL \ Connector \ C++ \ 1.1.9/include -MMD -MP -MF "build/Debug/MinGW-Windows/main.od" -o build/Debug/MinGW-Windows/main.o main.cpp – CZBios

関連する問題