将DLL链接到c ++程序QTCreator

时间:2011-05-12 15:43:27

标签: c++ dll linker qt-creator

我对这个概念有点新,并且在运行时加载库时遇到一些问题。在我正在使用的开发机器上,库似乎正确加载并且程序将始终正确运行,但是当我编译该程序并将其移动到具有所需DLL的另一台计算机时,它们无法加载。我认为发生这种情况的主要原因是因为未加载的DLL位于系统某处的某个文件夹中(如C:\ windows \ system32),这在大多数其他计算机上都不存在。

我的问题是,如果我提供具有所需功能的自定义DLL并将其与程序一起发送,我如何才能在QTCreator中正确链接?我已经尝试了-l和-L标志的组合(例如:-llibname -LC:\ path \ to \ where \ dll \ would \ be)但是这似乎也没有。另一个令人惊讶的事情(无论如何)是即使程序运行需要DLL,程序仍然成功启动其他计算机。

如果有人有任何建议或教程,我可以读到这个,我将非常感激。

1 个答案:

答案 0 :(得分:0)

首先,您应该阅读how Windows finds DLLs以加载它们。

其次,一旦你知道这个过程是如何工作的,你可以考虑将你的DLL与你的应用程序一起运送,这样当在其他机器上运行时问题就会消失。如果它们是第三方DLL,您应该检查您是否有权这样做。

第三,Windows dependency walker tool非常适合在运行时诊断DLL加载问题。只需加载.exe并点击F7即可开始分析。它将显示应用程序加载的所有DLL以及从何处加载。

最后,我不知道QTCreator,但我想你需要做的只是通过正确的开关传递.lib文件(this link表明-L是正确的开关,FWIW)。