vla*_*don 4 c++ windows dll qt qt5
更新对不起,伙计们,我错误地确定了问题.一切正常,错误在于"其他程序逻辑".请删除或关闭问题.
Qt5用于在任何指令之前加载libeay32.dll和ssleay32.dll启动程序main()(因为它是静态的).
(详情:它位于qtbase\src\network\ssl\qsslsocket_openssl_symbols.cpp:
static QPair<QSystemLibrary*, QSystemLibrary*> loadOpenSslWin32()
Run Code Online (Sandbox Code Playgroud)
)
问题:
libeay32.dll并且ssleay32.dll驻留在它的exe目录中Qt按此顺序加载搜索dll(from qtbase\src\corelib\plugin\qsystemlibrary.cpp):
1号是应用程序路径,但事实上它并不在那里搜索.
我的节目:
int main()
{
// at this point Qt5 already checked and tried to load the DLLs
// so this:
ChangeCurrentWorkingDirectoryToExeDir(); // some function to change cwd to current exe dir
// does not work :-(
// ... other program logic ..
}
Run Code Online (Sandbox Code Playgroud)
如何在更改工作目录后强制Qt5重新加载OpenSSL DLL?可能是某人已经面临这个问题......
更新对不起,伙计们,我错误地确定了问题.一切正常,错误在于"其他程序逻辑".请删除或关闭问题.
QSystemLibrary::loadonlySystemDirectory = false对于SSL 调用,所以QFileInfo(qAppFileName()).path()是搜索DLL的第一个位置.搜索顺序:
我没有找到相关的文档,但在我们的软件中,Qt找到SSL libeay32.dll,ssleay32.dll当它们与应用程序.exe位于同一目录中时,给定
如果您有qt.conf,则可以应用默认库值,即.\lib.
| 归档时间: |
|
| 查看次数: |
1813 次 |
| 最近记录: |