2011-05-04 74 views
1

我在使用C++下的MYSQL連接器構建Hello World應用程序時遇到問題。 這裏是生成日誌:使用Mysql連接器構建應用程序時出錯

"/usr/bin/make" -f nbproject/Makefile-Release.mk QMAKE= SUBPROJECTS= .build-conf 
make[1]: Entering directory `/c/data/c++/MySqlConnectorHW' 
"/usr/bin/make" -f nbproject/Makefile-Release.mk dist/Release/MinGW-Windows/mysqlconnectorhw.exe 
make[2]: Entering directory `/c/data/c++/MySqlConnectorHW' 
mkdir -p dist/Release/MinGW-Windows 
g++.exe -v -d -v -L C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt\mysqlcppconn.dll -o dist/Release/MinGW-Windows/mysqlconnectorhw build/Release/MinGW-Windows/main.o -L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.0/lib/opt -L/C/boost/libs -L/C/Program\ Files/MySQL/MySQL\ Connector\ C\ 6.0.2/lib/opt 
g++.exe: Files\MySQL\MySQL: No such file or directory 
g++.exe: Connector: No such file or directory 
g++.exe: C++: No such file or directory 
g++.exe: 1.1.0\lib\opt\mysqlcppconn.dll: No such file or directory 
Using built-in specs. 
COLLECT_GCC=C:\MinGW\bin\g++.exe 
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.5.2/lto-wrapper.exe 
Target: mingw32 
Configured with: ../gcc-4.5.2/configure --enable-languages=c,c++,ada,fortran,objc,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --disable-werror --build=mingw32 --prefix=/mingw 
Thread model: win32 
gcc version 4.5.2 (GCC) 
make[2]: Leaving directory `/c/data/c++/MySqlConnectorHW' 
make[1]: Leaving directory `/c/data/c++/MySqlConnectorHW' 
make[2]: *** [dist/Release/MinGW-Windows/mysqlconnectorhw.exe] Error 1 
make[1]: *** [.build-conf] Error 2 
make: *** [.build-impl] Error 2 

BUILD FAILED (exit value 2, total time: 21s) 

有人可以幫我解決這個問題嗎?謝謝。

回答

1

我只在Unix下使用過g ++,所以其中一些基於你給出的例子(可能是錯誤的)。

你有幾個問題。你會從g ++中得到一些奇怪的行爲,因爲它將這個C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt\mysqlcppconn.dll視爲不同的參數(用空格分隔)C:\Program,Files\MySQL\MySQL,Connector,C++1.1.0\lib\opt\mysqlcppconn.dll。這可以通過引用字符串"C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt\mysqlcppconn.dll"來克服。

但是,傳遞給g ++的-L參數用於指定庫的搜索路徑,因此我不指望您在此處指定dll的名稱。我希望你能通過-L"C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt"。根據你的類似-L的論點,它似乎也可以通過轉義字符串中的代碼來達到這個目的,在這種情況下,你最終會得到:-L/C/Program\ Files/MySQL/MySQL\ Connector\ C++\ 1.1.0/lib/opt,正如你已經經過的那樣。

結論:,它似乎可能是這樣的:-L C:\Program Files\MySQL\MySQL Connector C++ 1.1.0\lib\opt\mysqlcppconn.dll真的應該是指定一個庫鏈接,而不是搜索路徑。如果是這種情況,那麼你應該使用-l而不是-L它應該簡單地爲:-lmysqlcppconn(至少這是它在UNIX下的工作方式,在windows下你可能需要指定擴展名,即-lmsqlcppcon.lib)。

然後,g ++將嘗試通過搜索-L參數指定的所有路徑來解析缺失的鏈接,以查看它們是否具有與提供的-l parameter匹配的任何庫。

我建議打開makefile:nbproject/Makefile-Release.mk,看看這個參數來自哪裏,並相應地更新它。

看你的其餘參數,這是值得注意的,你可能有類似的問題,當它到達你的輸出,因爲它也有它的空間,似乎並沒有進行轉義:

-o dist/Release/MinGW-Windows/mysqlconnectorhw build/Release/MinGW-Windows/main.o 
相關問題