如何链接到外部DLL,以便它能被Windows 8.1识别?

问题描述:

我使用C#与Visual Studio 2010开发了WindowsForm应用程序,并且我有外部DLL(使用VC++编写)。当我将它部署到Windows 7时,一切正常。但是,在Windows 8.1上,它安装得很好,运行良好,直到程序需要访问DLL中的库函数。它抱怨说它找不到DLL(即使该文件与可执行文件位于同一位置)。如何链接到外部DLL,以便它能被Windows 8.1识别?

这只发生在Windows 8.1中(可能还包括Windows 8)。

我错误地链接了DLL吗?

+1

最有可能的原因:Windows 8.1机器上未安装Visual Studio 2010 Microsoft C运行时。或者可能是C++类库。与操作系统版本无关,除了间接的情况。您可以使用Process Monitor来诊断这类问题,查找找不到文件的错误。 –

+0

非常感谢!我明天会试一试。 – Hary

+0

非常感谢。我发现(从ProcessMonitor)该DLL实际上是一个调试版本,因为它试图访问调试版本的C运行时DLL。现在它都是固定的。谢谢一堆! – Hary

答案是从上面哈里·约翰斯顿的评论:

最有可能的原因:在Visual Studio 2010中的Microsoft C运行时不能在Windows 8.1的机器上安装。或者可能是C++类库。与操作系统版本无关,除了间接的情况。您可以使用Process Monitor来诊断这类问题,查找找不到文件的错误。

假设你的DLL是Windows自带的DLL,两件事情之一正在发生的事情:

  1. Windows正在未能找到该DLL
  2. 的DLL具有不可用在其他依赖机器

要检查,请尝试更改PATH环境变量以包含您的DLL所在的文件夹。如果程序运行,则这是定位DLL的问题。

如果这样做不起作用,那么您需要进行更深入的调查以了解实际发生的情况。

有一个指导here,向您展示如何使用Process Monitor来确定您的程序正在发生什么,以找出实际上未能加载的内容。这可能不是你的C++ DLL,它可能是它的许多依赖之一。