如何让Visual Studio将所需的.dll文件复制到发布文件夹中?

9
我正在使用C++和Qt开发Visual Studio 2012应用程序。我能够编译和调试它,但是一些.dll文件没有在DebugRelease文件夹中。我尝试了其他帖子的解决方案,但都没有起作用。那么,如何让Visual Studio将所需的.dll文件复制到发布文件夹中?我认为应该有一个选项,但现在开始考虑手动复制。

你可以尝试将它们添加为资源。 - Vahid Nateghi
在您的项目属性中,有一个名为资源的部分,我会将其添加为答案。 - Vahid Nateghi
我们在谈论哪些dll?你需要在debug/release文件夹中需要哪个DLL?这些是应该由你的项目构建,还是普通的Qt DLL? - MSalters
常规的Qt Dlls和msvc Dlls。 - Netwave
在项目属性中添加一个后构建事件,以便在需要时复制dll。使用环境变量以保持一致。 - Jepessen
1
可能是重复的问题:如何让Visual Studio将DLL复制到输出目录? - user
2个回答

26

有太多错误的建议,DLL不能作为资源。Windows 要求代码必须存储在一个具有正确PE32头文件的单独可执行文件中。这使它能够创建一个内存映射文件将文件内容映射到内存中,允许代码被多个进程共享,并将其保持不被分页文件调用。并且可以重新定位代码当DLL的基地址已经在使用时。

只需使用"项目属性-生成事件-后期生成事件"来复制DLL即可。如果您将所需的DLL存储在项目的"dlls"子目录中,那么此命令将在必要时进行复制:

 xcopy /d /y "$(ProjectDir)dlls\*.*" "$(OutDir)"

在Debug和Release配置中都使用它,这样你就可以调试确切地发布的内容。


-2
将您的.dll文件作为资源添加到项目中。这样,您的.dll文件将在项目的resources文件夹中。
尝试添加项...->新建项...并将一个资源(.qrc)文件添加到项目中,并将.dll文件添加到该文件中。

我刚编译时收到了这个警告:RCC: 警告:'C:\Users\Netwave\Documents\Visual Studio 2012\Projects\Shutdowner\Shutdowner\shutdowner.qrc' 中没有资源。 - Netwave
好的,我一直在调查,应该是在“清单工具”和“XML文档生成器”之间,但是在我的选项中没有这样的选择... :S - Netwave
@DanielSanchez:在你的解决方案资源管理器中,右键点击你的项目名称,在列表末尾你会看到“属性”。 - Vahid Nateghi
现在,尝试添加一个新项,然后将资源文件添加到项目中。 - Vahid Nateghi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接