2012-01-03 53 views
1

我是使用QT的新手,所以我想这有一个简单的答案,但它无法帮助我。我正在将应用程序移植到QT中,并且我开始使用QTEditor来完成此任务。我的编译器是MinGw和QT版本是4.7.4,操作系统是Windows 7.QT,包括使用QTEditor的.dll

在编译和链接中所有情况都很好。在运行期间,我得到退出代码0xc0000135,这意味着缺少依赖关系。问题中的依赖关系是我自己创建的C库,也是用mingw编译的,因此不存在二进制兼容性问题。另外,如果我将.dll放在与生成的可执行文件相同的目录中,应用程序运行良好。

这里是.pro文件的相关部分:

win32:LIBS += C:\Projects_SourceCode\MyLib\Bin\Release\MyLib.dll 
win32:INCLUDEPATH += C:\Projects_SourceCode\MyLib\ 

我缺少什么?这编译和链接很好,但稍后可执行文件无法找到“MyLib.dll”。我想避免把它放在路上。 QTEditor中没有办法让可执行文件知道在哪里搜索.dll吗?

我习惯于使用Codeblocks IDE,并且从那里开始真的很容易做到这一点,所以我认为QTEditor也允许这样的选项。任何帮助,将不胜感激。

+0

这已被问过。 http://stackoverflow.com/questions/718447/adding-external-library-into-qt-creator-project。考虑阅读手册。 – 2012-01-03 09:46:12

+0

-L标志是否也影响系统在运行应用程序时查找dll的位置?据我所知,这只适用于编译,这在这里工作得很好。 – 2012-01-04 00:40:40

回答

1

您可以将它添加到PATH变量中,仅用于运行环境(而不是整个系统) - 您可以在项目屏幕中操作运行环境。显然,这只适用于调试,不适用于生产可执行文件。为了分发你的应用程序,考虑将dll与主可执行文件放在相同的目录中。

在哪里寻找DLL是(至少在windows上)不是以可执行文件写的 - 系统首先在可执行目录中查找,然后查看PATH目录,所以你不能以任何其他方式进行操作。在哪里寻找DLL是执行的问题,而不是编译,所以不要指望qmake项目文件来帮助你。