QT發布的程式,exe可執行程式與dll檔案都在同一個目錄下,我現在想把那些dll檔案,放到一個檔案夾下,這個檔案夾和exe在同一個目錄下,這樣應該怎么做?
望各位路過的大神指點一下
uj5u.com熱心網友回復:
1 延遲加載dll,exe運行時,先使用SetDllDirectory。2 使用另外的exe啟動,先設定PATH
uj5u.com熱心網友回復:
在main中呼叫SetDllDirectory#include "mainwindow.h"
#include <QApplication>
#include "Windows.h"
int main(int argc, char *argv[])
{
QString s = "./DB";
LPCWSTR path = s.toStdWString().c_str();
SetDllDirectory(path);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
1 延遲加載dll,exe運行時,先使用SetDllDirectory。
2 使用另外的exe啟動,先設定PATH
這是兩種方法還是一個方法兩個步驟呢?
還有怎么延遲加載dll呢?
uj5u.com熱心網友回復:
可以詳細說一下嗎?
uj5u.com熱心網友回復:
假設DLL在檔案夾test下,把這句話加到main.cpp里面。QCoreApplication::addLibraryPath("./test");
uj5u.com熱心網友回復:
2 種方法
uj5u.com熱心網友回復:
我又兩個問題:
1、我的exe呼叫了DLL1,DLL1又呼叫DLL2,現在DLL1和DLL2都在test檔案夾下,QCoreApplication::addLibraryPath("./test");這樣可以嗎?
2、我的DLL1和許多其他型別的檔案有關,我都放在test檔案下了。

按照你提供的方法,在除錯時例外找不到DLL2。
uj5u.com熱心網友回復:
我用的這個 QCoreApplication::addLibraryPath(絕對路徑);exe直接呼叫DVPCSHARP_CLR.dll,DVPCSHARP_CLR.dll會呼叫其他的檔案,如DVPCSHARP_CLR.dll
運行例外:
uj5u.com熱心網友回復:
addLibraryPath()是針對插件目錄的
uj5u.com熱心網友回復:
挖個墳,樓主問題解決了么uj5u.com熱心網友回復:
解決了嗎,大佬們轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/232766.html
標籤:工具平臺和程序庫
上一篇:QCefView初始化錯誤
