2017-07-29 29 views
-1

我在源代碼中從.pro文件創建了makefile,然後在將Q_IMPORT_PLUGIN(qsqlmysql)添加到我的代碼中並將qsqlmysql.lib和libmysql.lib添加到我的代碼後,生成並生成qsqlmysql.lib文件項目中,我得到了以下錯誤,當建築:當從qt5鏈接mysql時出錯

錯誤LNK2019:(?qt_static_plugin_qsqlmysql @@ YA BUQStaticPlugin @@ XZ)無法解析的外部 「結構QStaticPlugin常量__cdecl qt_static_plugin_qsqlmysql(無效)」 ,符號是 引用於「public:__cdecl StaticqsqlmysqlPluginInstance :: StaticqsqlmysqlPluginInstance(void)」 (?? 0StaticqsqlmysqlPluginInsta nce @@ QEAA @ XZ)

我花了半天時間,仍然無法解決問題。以供參考,我粘貼鏈接命令如下,

/OUT:"H:\Market\freechartgeany-x64\freechartgeany-1.1.0\x64\Debug\FreeChartGeany.exe「/ MANIFEST/NXCOMPAT/DYNAMICBASE」 OpenGL32.lib「」Qt5PlatformSupportd.lib「」qwindowsd.lib「」Qt5OpenGLd.lib「」Qt5AxBased.lib「」Qt5AxContainerd.lib「」Qt5Cored.lib「」Qt5Guid.lib「」Qt5Multimediad.lib「」Qt5Networkd.lib「」 「Qt5Sqld.lib」「Qt5Widgetsd.lib」「qtmaind.lib」「kernel32.lib」「user32.lib」「shell32.lib」「uuid.lib」「ole32.lib」「advapi32.lib」「ws2_32.lib」「 gdi32.lib「」comdlg32.lib「」oleaut32.lib「」imm32.lib「」winmm.lib「」winspool.lib「」msimg32.lib「」Qt5MultimediaWidgetsd.lib「」odbc32.lib「」odbccp32.lib「/ DEBUG/MACHINE:X64/INCREMENTAL /PGD:"H:\Market\freechartgeany-x64\freechartgeany-1.1.0\x64\Debug\FreeChartGeany.pgd「/ SUBSYSTEM:WINDOWS/MANIFESTUAC:」level ='asInvoker'uiAccess ='假'「/ManifestFile:"x64\Debug\FreeChartGeany.exe .intermediate.manifest「/ ERRORREPORT:PROMPT/NOLOGO /LIBPATH:"I::Qt\qt-everywhere-opensource-src-5.3.1\qtbase\lib」/ LIBPATH:「I:\ Qt \ qt-everywhere-opensource -src-5.3.1 \ qtbase \ plugins \ sqldrivers「/LIBPATH:"I:\Qt\qt-everywhere-opensource-src-5.3.1\qtbase\plugins\platforms」/ LIBPATH:「I:\ Mysql \ lib 「/ TLBID:1

+0

也許這樣:https://github.com/telegramdesktop/tdesktop/issues/2340或https://forum.qt.io/topic/34969/static-link-q_import_plugin-qico-unresolved-external-symbol或https://bugreports.qt.io/browse/QTBUG-48415當你得到一個錯誤,把它的獨特的部分和谷歌..我發現這些鏈接通過谷歌搜索結構QStaticPlugin const __cdecl qt_static_plugin_qsqlmysql – xaxxon

+0

謝謝xaxxon。我訪問了您提供的鏈接,但似乎他們無法解決我的問題。在我的項目中,我可以靜態鏈接其他qt插件,而不是qsqlmysql.lib(我從源代碼構建這個靜態lib)。順便說一下,mysql版本是5.5.11 winx64。我的qt源代碼是5.3.1 – user497032

+0

發佈了正在使用的實際鏈接器命令,它提供了錯誤消息。 – xaxxon

回答

0

我在下面的方式解決了這個問題,

在qt4.8.4

,當你靜態鏈接qsqlmysql,你應該寫:

Q_IMPORT_PLUGIN(qsqlmysql) 

但QT5。 3.1,名稱改變了,你應該寫如下的宏:

Q_IMPORT_PLUGIN(QMYSQLDriverPlugin) 

這就是爲什麼我總是得到一個無法解析的外部錯誤。更改名稱後,我可以成功鏈接mysql。