我有一个Qt5 C ++项目,包含一个主应用程序和一个(由我创建)共享库。它编译并执行,我能够部署它。问题是,通过部署,我需要将我的共享库的已编译dll放在与主可执行文件相同的目录中。但是,我希望保持顶级文件夹相对干净,并将必要的文件放在适当的文件夹子树中。所以,我的问题是,我应该在* .pro文件中放置什么才能将dll的路径更改为myApp / myLib,其中myApp是主应用程序可执行文件所在的文件夹。
答案 0 :(得分:2)
Dynamic-Link Library Search Order相当静态。要包含子目录,需要自定义DLL加载。有很多方法可以实现您的目标。
还有其他方式,看起来很有吸引力,但你不应该真正使用它们。这是一个列表,包括不使用它们的理由:
PATH
环境变量:虽然易于实施,但这是解决本地问题的全局解决方案。更改全局环境变量会影响整个系统。它可以由用户和其他软件修改,从根本上破坏您的应用程序。它占用了宝贵的环境空间(What is the maximum length of an environment variable?)。<小时/> 1 如果您提前知道库,则可以手动加载它们(LoadLibrary),并通过延迟加载辅助函数获取它们。但是,如果这些模块中的任何一个具有在标准搜索路径中找不到的依赖项,则会失败。
答案 1 :(得分:1)
由于Windows会为您的程序搜索DLL,而不是程序本身,因此您无法告诉makefile在哪里搜索库。
但是你可以:
作为旁注:Qt Plugins可以满足您的需求,但核心依赖项本身并不是Qt插件。