当前位置:  开发笔记 > 编程语言 > 正文

如何在Visual Studio C++中使用第三方DLL文件?

如何解决《如何在VisualStudioC++中使用第三方DLL文件?》经验,为你挑选了4个好方法。

我知道我需要使用LoadLibrary().但是,为了使用第三方DLL文件,我需要采取哪些其他步骤?

我只是跳进了C++,这是我唯一没有得到的部分(作为Java程序员).我只是在研究如何使用Qt库和tesseract-ocr,但这个过程对我来说没有任何意义,谷歌也很难.

如何告诉编译器我正在使用的函数?是否应该有来自第三方供应商的包含文件?



1> Mark Ransom..:

正如其他人所说,LoadLibrary是很难做到的,几乎没有必要.

DLL应该带有一个用于链接的.lib文件,以及一个或多个头文件到#include到你的源代码中.头文件将定义可以从DLL中使用的类和函数原型.即使您使用LoadLibrary,也需要这样做.

要链接库,您可能必须将.lib文件添加到链接器/输入/附加依赖项下的项目配置中.



2> rich p..:

要将第三方DLL合并到我的VS 2008 C++项目中,我执行了以下操作(您应该能够翻译成2010年,2012年等)...

我用我的其他头文件把头文件放在我的解决方案中,对我的代码进行了更改以调用DLL的函数(否则我们为什么要这样做呢?).:^)然后我更改了构建以将LIB代码链接到我的EXE,将DLL复制到位,并在我做"干净"时清理它们 - 我在下面解释这些更改.

假设您有2个第三方DLL,A.DLL和B.DLL,并且每个(A.LIB和B.LIB)和头文件(AH和BH)都有一个存根LIB文件.

在解决方案目录下创建一个"lib"目录,例如使用Windows资源管理器.

将第三方.LIB和.DLL文件复制到此目录中

(对于您使用的每个源构建目标(Debug,Release),您必须为下一组更改进行一次.)

    使您的EXE依赖于LIB文件

    转到配置属性 - >链接器 - >输入 - >附加依赖项,并一次列出一个.LIB文件,用空格分隔: A.LIB B.LIB

    转到配置属性 - >常规 - >其他库目录,并将"lib"目录添加到您已经拥有的任何目录中.条目以分号分隔.例如,如果您已经在$(SolutionDir)fodder那里,则将其更改$(SolutionDir)fodder;$(SolutionDir)lib为添加"lib".

    强制DLL被复制到输出目录

    转到配置属性 - >构建事件 - >构建后事件

    将以下命令放入命令行(对于开关含义,请参见DOS窗口中的"XCOPY /?"):

    XCOPY "$(SolutionDir)"\lib\*.DLL "$(TargetDir)" /D /K /Y

    你可以把这样的东西放到描述中:

    Copy DLLs to Target Directory

    从Build中排除应该是No.点击OK.

    在清理输出文件夹时告诉VS清理DLL:

    转到配置属性 - >常规 - >要清除时删除的扩展,然后单击"..."; 添加*.dll到列表的末尾并单击OK.


那应该是`Configuration Properties - > Linker - > General - > Additional Library Directories`.
我正在尝试使用您的方法来使用第三方dll.我正在使用Visual Studio 2012 ultimate,它在`Configuration Properties - > General`选项卡中没有`Additional Library Directories`.请帮我.

3> Laserallan..:

这些是在Windows中使用DLL文件的两种方法:

    存在具有关联头文件的存根库(.lib).当您将可执行文件与lib文件链接时,它将在启动程序时自动加载DLL文件.

    手动加载DLL.如果您正在开发一个插件系统,其中有许多DLL文件实现了一个通用接口,这通常是您想要做的.有关此内容的详细信息,请查看LoadLibrary和GetProcAddress的文档.

对于Qt,我怀疑有可用的标题和静态库,您可以在项目中包含和链接.


这仅适用于标准库.对于自定义库(第三方),您无法静态链接dll,除非有人明确构建了可以链接的静态版本.

4> drby..:

为了使用Qt动态链接时,你必须指定lib文件(通常qtmaind.lib,QtCored4.libQtGuid4.lib为"调试" CONFIGRATION)的
Properties » Linker » Input » Additional Dependencies.

您还必须指定库所在的路径,即
Properties » Linker » General » Additional Library Directories.

并且您需要.dll在运行时访问相应的s,方法是将它们存储在与您.exe路径中的文件夹相同的文件夹中.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有