MySQLデータベースに接続できなかったこの問題が発生しました。しかし、this答えは私のために働いた。問題は次のとおりです。「libmysql.dll」と「libmysql.lib」をMySQLを使用するすべてのプロジェクト(「Basti Vagabond」で述べたように)にコピーアンドペーストしたくありません。QMYSQLドライバがロードされていません(他の解決方法?)
この問題を解決する他の方法はありますか?
私のケースは、上記のリンクのものとまったく同じです。
MySQLデータベースに接続できなかったこの問題が発生しました。しかし、this答えは私のために働いた。問題は次のとおりです。「libmysql.dll」と「libmysql.lib」をMySQLを使用するすべてのプロジェクト(「Basti Vagabond」で述べたように)にコピーアンドペーストしたくありません。QMYSQLドライバがロードされていません(他の解決方法?)
この問題を解決する他の方法はありますか?
私のケースは、上記のリンクのものとまったく同じです。
あなたは、このプロセスを自動化するカップルのオプションがあります。
一つの方法は、あなたのmain.cpp
にライブラリのパスを追加することです。
qApp->addLibraryPath("C:\\path\\something\\mysql.dll");
それとも、全体のプロセスを自動化:
QMAKE_POST_LINK
は一緒にTARGETをリンクした後に実行するコマンドを指定します。この変数は通常は空であるため、何も実行されません。
# If operating system is Windows perform this V
win32 {
# Create variable containing the path to your project compile folder (probably no need to change since this is automated by Qt)
OUT_PWD_WINDOWS = $$OUT_PWD
# Switch frontslashes with double backslashes
OUT_PWD_WINDOWS ~= s,/,\\,g
# Create variables to set debug path and release path
# Gotta change the \\debug and \\release to the correct debug and release folders
OUT_PWD_WINDOWS_DEBUG = $$quote($$OUT_PWD_WINDOWS\\debug )
OUT_PWD_WINDOWS_RELEASE = $$quote($$OUT_PWD_WINDOWS\\release)
# Create variables to set the path to libs and dlls you want to copy (*.lib will copy all files ending in .lib from the specified path)
# you can change that however to mysql.lib for example if you only want 1, same goes for .dll
LIBS_TO_COPY = $$quote(C:\\MySql\\libs\\*.lib)
DLLS_TO_COPY = $$quote(C:\\MySql\\libs\\*.dll)
# Copy libraries and dlls into debug path/else copys them into the release folder
# essentially this is saying if(config == debug) perform tasks else perform tasks for release, which is add actions to be executed after linking
CONFIG(debug , debug|release) {
# Here we add the copy command to the QMAKE_POST_LINK variable which will be executed once the linking is done
# We have 1 entry for libs and 1 for dlls, same goes for the release which is in the else
QMAKE_POST_LINK += $$quote(xcopy $$LIBS_TO_COPY $$OUT_PWD_WINDOWS_DEBUG $$escape_expand(\n\t))
QMAKE_POST_LINK += $$quote(xcopy $$DLLS_TO_COPY $$OUT_PWD_WINDOWS_DEBUG $$escape_expand(\n\t))
} else {
QMAKE_POST_LINK += $$quote(xcopy $$LIBS_TO_COPY $$OUT_PWD_WINDOWS_RELEASE $$escape_expand(\n\t))
QMAKE_POST_LINK += $$quote(xcopy $$DLLS_TO_COPY $$OUT_PWD_WINDOWS_RELEASE $$escape_expand(\n\t))
}
}
今、名前の変更/ビルドフォルダを削除、あなたの.pro
ファイルでこれを入れて、パスの調整を行うと、あなたはどこに供給されたこれらのライブラリを持っているあなたの.pro
のすべてのファイルにこれを貼り付けることができますそれらが必要です。
.pro
ファイルに読み込むマクロ/キーバインド/スニペットを作成することで、それを自動化することもできます。
サイドノート:共有の幻想的な世界へ
xcopy C:\Actions\*.lib C:\Users\xyz\dev\C++\Qt\build-Test-Desktop_Qt_5_7_0_MSVC2015_64bit-Debug\debug
C:\Actions\Test - Copy (2).lib
C:\Actions\Test - Copy.lib
C:\Actions\Test.lib
3 File(s) copied
xcopy C:\Actions\*.dll C:\Users\xyz\dev\C++\Qt\build-Test-Desktop_Qt_5_7_0_MSVC2015_64bit-Debug\debug
C:\Actions\test - Copy (2).dll
C:\Actions\test - Copy.dll
C:\Actions\test.dll
3 File(s) copied
01:45:08: The process "C:\Qt\Qt5.7.0\Tools\QtCreator\bin\jom.exe" exited normally.
Windowsは.dll
をいくつかの場所で検索しています。これらはすべて、別の場所からの共有ライブラリではひどいものです(複数のアプリケーションが
https://msdn.microsoft.com/en-us/library/7d83bc18(v=vs.140).aspxからの引用:それらの独自のコピー/バージョン)をインストールし、両方の暗黙的および明示的なリンクで
を、そのようKernel32.dllのとUser32.dllのような「既知のDLL」、Windowsのための最初の検索します。 Windowsは、次のシーケンスでDLLを検索します。
現在のプロセスの実行可能モジュールがあるディレクトリ。
現在のディレクトリ。
Windowsのシステムディレクトリ。 GetSystemDirectory関数は、このディレクトリのパスを取得します。
Windowsディレクトリ。 GetWindowsDirectory関数は、このディレクトリのパスを取得します。
PATH環境変数にリストされているディレクトリ。
あなたは行う唯一の賢明なことですが1をやっていました。
システム上のあなたのユーザは、5を使用してPATHを変更することもできます(しかし、デプロイ可能なパッケージを作成したい場合はこれは機能しません)。
2.、3.および4.はアプリケーション開発者にとって全く役に立たない。
ようこそ:あなたはOSの特定のコマンド
コンパイラの出力でこれを記述する必要があります他のオペレーティングシステムについては Windows上のライブラリ – peppe