2011-02-24 62 views
2

我正在嘗試將MySQL Connector/C++添加到Visual Studio 2010項目中。如何將MySQL連接器/ C++ 1.1添加到Visual Studio 2010項目中?

我按照步驟(here, mysql docs)將它添加到Visual Studio(我還在「其他包含目錄」中添加了Boost)。

它要求提供一個「sqlstring.h」文件(如何釋放可能會丟失文件?!),所以我從源文件(mysql source archives)中獲得了它。

然後,它要求libmyql.lib,我有MySQL服務器5.5 \ lib的lib目錄。

而現在,我對這個錯誤:

Error 127 error LNK1120: 31 unresolved externals C:\Users\Haks\Documents\Visual Studio 2010\Projects\ProductManager\Debug\ProductManager.exe ProductManager

Error 60 error LNK2001: unresolved external symbol "__declspec(dllimport) bool __cdecl std::operator<<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) C:\Users\Haks\Documents\Visual Studio 2010\Projects\ProductManager\ProductManager\mysqlcppconn-static.lib(mysql_ps_resultset.obj) ProductManager

所以,也許是因爲我的MySQL連接器/ C++ 1.1的二進制版本,也許它不是用VS 2010兼容...

但我沒有找到編譯源文件的好方法,我從不使用Boost或CMake,它似乎是需要的。

我發現沒有提及我的問題,所以如果有人得到了迴應或好方法,這對我和很多人都會非常有用。

謝謝

+0

遵循與您相同的教程,有同樣的問題:)雖然這裏:http://forge.mysql.com/wiki/Connector_C%2B%2B,它說:[完成]準備支持Visual Studio 2010,所以可能下一個版本將支持2010年。 – 2011-03-01 15:18:22

回答

1

我終於得到了MySQL的連接器/ C++下載源代碼,並使用相同的設置爲我的項目編譯它與Visual Studio 2010的工作。它仍然警告有關SqlString庫:

j:\mysql-connector-c++-1.1.0\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' 

但是,它似乎是好的。

6

首先,thanx向dar7yl指向正確的方向。

在花費了很多時間調試mysql連接(VS 2010,C++)後,我證明這是一個很有發展經驗的事情,我不得不說這樣的話。 (假設你設置了C++包含文件目錄和鏈接目錄+正確的附加依賴文件,否則請參考點2上的網站以供參考)

0.)是的,我們需要增強庫。下載boost庫(搜索谷歌)並將其解壓縮到您的開發文件夾中,並讓您的C++附加include目錄指向它(boost主目錄,而不是boost子目錄)。

1.)需要清楚VS解決方案配置模式「debug」和「release」的區別。在目錄... \ mysql \ Connector C++ ____ \ lib \目錄下完整安裝MYSQL後提供的.lib文件有兩個調試目錄,並可選擇與解決方式「debug」和「release」一起使用。主要區別在於「調試」模式使用額外的.pdb文件。

2.)http://dev.mysql.com/doc/refman/5.1/en/connector-cpp-apps-windows-visual-studio.html給出了VS2008 mysql連接設置的一個非常詳細的大綱。特別是需要在[項目屬性樹視圖中,在C++中,預處理器] CPPCONN_PUBLIC_FUNC兩個語句=和HAVE_INT8_T包括= 1

3)明確,你會與庫,mysqlcppconn.lib喜歡哪種連接方式是基於dll的,而mysqlcppconn-static.lib是基於靜態的。對於基於DLL的lib,需要將相關的dll mysqlcppconn.dll存放到\ windows \ system32 \或其他系統路徑才能訪問。
對於靜態連接記住它使用外部C連接,所以你需要libmysql.lib + libmysql.dll(libmysql.pdb,如果在「debug」下)從... \ mysql \ connectorc c ___ \,如果沒有,你將得到無法解析的外部符號錯誤LNK 2019.因此,請及時更新您的C++包含文件目錄,鏈接包含文件目錄,相應的附加依賴關係,並將.dll文件放入系統路徑或.... \ windows \ system32 \

4.)在這一點上,事情應該爲我們中的一些人工作。不,它不適合我。原因?圖書館可比性問題,由dar7yl概述。因此,如果是這種情況,請通過選擇平臺的源代碼下載http://dev.mysql.com/downloads/connector/cpp/下的連接器的源代碼。解壓後,它從這裏變得有點複雜。 否VS解決方案或項目文件?不用擔心,請參閱cmake __。txt文件?這是我們的解決方案。 下載cmake並將源目錄和目標目錄指向解壓後的源代碼目錄。然後打開目錄中的cmake __。txt並搜索關鍵詞「boost」並更新boost目錄以指向您的boost目錄。運行配置並設置爲VS 2010,檢查概述的配置並更改所需的名稱/值表,然後按下生成。 現在你的項目+解決方案文件應該已經生成,打開它,你會看到很多項目。我們只關心mysqlcppconn和mysqlcppconn-static。檢查並更新包含文件,兩個項目屬性中的鏈接文件+依賴項並編譯。將生成的.lib + .dll(如果使用「debug」模式,則爲.pdb)放入相應的目錄中,並且您的項目現在應該可以工作。

到此爲止,mysql連接現在對我有用,希望它也適用於您。上述內容可能會遺漏一些細節,我很抱歉。

+0

非常感謝和+1 – 2013-03-05 18:56:07

+0

+1以一個很好的答案。 – 2013-05-16 00:31:04

2

只是dddddd好帖子的一小部分。如果您在Windows7上編譯,那麼您可能會從libmysql.lib庫中獲得一些「未解析的外部」。我發現這是由於libmysql.lib來自服務器的64位安裝。您需要找到32位版本並與之鏈接,或者只需安裝32位服務器。

+0

一旦你獲得了足夠的聲望,這應該是一個評論。 – ApproachingDarknessFish 2013-04-26 02:39:00

相關問題