在使用它之前确定DLL的存在
-
20-09-2019 - |
题
使用Visual C ++ 2008速成版。我与导入库(.lib
)对可能或可能不会出现在目标系统上的DLL链接我的应用程序。你问前:我不能和我的应用程序分发DLL
如果该DLL不存在,只要我打电话从DLL的函数(而不是更早!),我得到像
的消息此应用程序未能启动,因为SomeLibrary.dll没有被发现。重新安装应用程序可能解决此问题。
我想,而不是发生,是应用程序检测到DLL是不存在的,并且仅仅关闭依赖于它的功能。我可以做一个呼叫LoadLibrary
,看看它是否成功,但我不知道这是否是足够的。也许导入库做幕后更多的工作?
是一个简单的呼叫LoadLibrary
足够?如果不是这样,我还需要什么别的呢?可即使这样做?
<强>更新强>:当然可以使用LoadLibrary
,然后GetProcAddress
对于每个欲使用的功能。但是,这是一个麻烦,我希望能避免和简单地使用所提供的导入库来代替。
解决方案
这是DelayLoad的连接选项是什么,但我不知道Express版本是否支持它。
其他提示
没有,LoadLibrary()
正是你想要的。使用它的唯一后果是函数指针设置到DLL时成功地加载DLL的麻烦,但对于该方法是在别处以及覆盖在网上。
如果你去检查这里( MSDN),你会看到,当LoadLibrary
加载失败,函数返回NULL值,你甚至可以使用GetLastError
功能检查特定的错误(应该是找不到文件)。
不隶属于 StackOverflow