这个问题涉及库的动态链接以及应用程序中库的动态链接的使用。
例如,我们使用Visual Studio环境开发使用C ++的应用程序。
这里是我们在Additional Include Directories中指定的包含头文件,以及 在附加依赖项:Mylibrary.lib 在其他库目录中:我们指定库的路径
在Windows中,我们还有“LoadLibrary”API,用于加载动态链接的ibrary。
我的问题是
谢谢!
答案 0 :(得分:2)
LoadLibrary
允许您继续执行程序。它返回一个可以检查的错误状态,并可以继续执行。
此外,链接允许您执行诸如使用来自其他二进制文件和类的类的内容。其他。 LoadLibrary
只允许您通过GetProcAddress
找到功能。
答案 1 :(得分:0)
想象一下,你有一个软件,例如needes在确定的时间进行转换 Internet网络地址转换为字符串。 在Windows Vista或更高版本中,您可以使用也能够处理ipv6的“InetNtop”功能,但是如果您直接链接到DLL,您的程序将无法在较低的操作系统上运行(例如:windows xp)。 因此,最好的解决方案可能是制作2个DLL,其中一个使用“InetNtop”,另一个使用例如“inet_ntoa”。 然后你的“主”程序将根据他安装的操作系统在运行时执行“InetNtop DLL”的LoadLibrary或“inet_ntoa DLL”。
答案 2 :(得分:0)
您要求您可以在其他依赖项库中包含dll,然后使用loadlibrary。
首先让我们理解:
静态链接时,需要程序员将.lib文件添加到 附加库依赖项,在编译时链接到调用程序,
但是,Dll是动态加载的,因此当您使用LoadLibrary时,无需在附加库依赖项中添加dll;如果您明确地链接Dll,则不需要在附加库依赖项中提供您的dll路径。
请注意: 使用LoadLibrary,您将能够获取Dll句柄,您可以使用GetProcAddress调用导出的函数。
参阅: https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx