我不是一个非常有经验的Windows开发人员,所以我希望这一切都有意义。
我使用Visual Studio 2010创建了一个Managed Assembly DLL.DLL(Plip.dll)包含一个C ++类,它使用System.IO.SerialPort类通过串口进行一些简单的通信。
在第二个Visual Studio项目中,我创建了一个使用Plip.dll中的类的简单GUI。在我的GUI项目中,我有一行:#using“Plip.dll”。在项目属性中,我将'Resolve #using References'值设置为Plip.dll的正确位置。 GUI构建得很好。如果我将GUI.exe和Plip.dll复制到同一个文件夹,GUI就可以在我的计算机上正常运行。
我遇到的问题是,当我将两个文件复制到另一台计算机时,我无法运行GUI可执行文件。我收到以下错误:“System.IO.FileNotFoundException。无法加载文件或程序集”Plip.dll“Vesion = ....”。即使exe和dll都位于同一个文件夹中,我也会收到此错误。
有关如何解决此问题的任何建议?我是否需要在GUI项目中设置一些选项以在运行时正确加载DLL?
答案 0 :(得分:3)
我认为问题不是Plip.dll,而是它的依赖关系。
在第二台计算机上使用Dependency Walker以查看它是否需要任何其他dll(它们可能安装在系统文件夹中或开发计算机上的%PATH%中,但不安装在另一台上)。
如果第二台计算机没有安装Visual Studio,则可能缺少Microsoft Visual C++ 2010 Redistributable Package(需要在另一台计算机上安装)
还要确保在Release中编译,因为调试版本需要调试依赖项。