使用Visual C ++ 2008速成版。我与导入库(.lib)对可能或可能不会出现在目标系统上的DLL链接我的应用程序。你问前:我不能和我的应用程序分发DLL

如果该DLL不存在,只要我打电话从DLL的函数(而不是更早!),我得到像

的消息
  

此应用程序未能启动,因为SomeLibrary.dll没有被发现。重新安装应用程序可能解决此问题。

我想,而不是发生,是应用程序检测到DLL是不存在的,并且仅仅关闭依赖于它的功能。我可以做一个呼叫LoadLibrary,看看它是否成功,但我不知道这是否是足够的。也许导入库做幕后更多的工作?

是一个简单的呼叫LoadLibrary足够?如果不是这样,我还需要什么别的呢?可即使这样做?

<强>更新:当然可以使用LoadLibrary,然后GetProcAddress对于每个欲使用的功能。但是,这是一个麻烦,我希望能避免和简单地使用所提供的导入库来代替。

有帮助吗?

解决方案

这是DelayLoad的连接选项是什么,但我不知道Express版本是否支持它。

其他提示

没有,LoadLibrary()正是你想要的。使用它的唯一后果是函数指针设置到DLL时成功地加载DLL的麻烦,但对于该方法是在别处以及覆盖在网上。

如果你去检查这里( MSDN),你会看到,当LoadLibrary加载失败,函数返回NULL值,你甚至可以使用GetLastError功能检查特定的错误(应该是找不到文件)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top