C# p/invoke dll在开发人员计算机上可以正常加载,但找不到分布式应用程序(xp/windows7)p/invoke.dll

C# p/invoke dll在开发人员计算机上可以正常加载,但找不到分布式应用程序(xp/windows7)p/invoke.dll,c#,visual-studio-2008,pinvoke,C#,Visual Studio 2008,Pinvoke,我们在c#中构建了一个项目,它使用一个.dll,我们使用p/invoke来访问.dll中的函数。它在我们的开发机器上工作,我们可以创建一个运行良好的软件安装版本,但是如果我们在其他xp机器和windows 7机器上加载它(这些机器不是开发机器),它会报告一个错误,即它试图p/调用的.dll找不到。此错误被报告为“应用程序无法启动,因为其并排配置不正确。” 我们做错了什么 谢谢,Ron。试着安装VC++可再发行版本。试着安装VC++可再发行版本。还要检查dll是否在路径中。我发誓,这真的很重要 还

我们在c#中构建了一个项目,它使用一个.dll,我们使用p/invoke来访问.dll中的函数。它在我们的开发机器上工作,我们可以创建一个运行良好的软件安装版本,但是如果我们在其他xp机器和windows 7机器上加载它(这些机器不是开发机器),它会报告一个错误,即它试图p/调用的.dll找不到。此错误被报告为“应用程序无法启动,因为其并排配置不正确。”

我们做错了什么


谢谢,Ron。

试着安装VC++可再发行版本。

试着安装VC++可再发行版本。

还要检查dll是否在路径中。我发誓,这真的很重要

还要检查dll是否在路径中。我发誓,这真的很重要

我假设您尝试p/调用的DLL实际上安装在客户机上?我不明白你在哪里说你正在使用的DLL实际上是CRT的一部分。如果是这样的话,斯图的回答会解决问题。否则,您需要在安装程序中包含DLL。我假设您尝试P/调用的DLL实际上安装在客户端计算机上?我不明白你在哪里说你正在使用的DLL实际上是CRT的一部分。如果是这样的话,斯图的回答会解决问题。否则,您需要在安装程序中包含DLL。+1您负责确保C/C++运行时DLL位于目标系统上。或者与它们静态链接。+1您负责确保C/C++运行时DLL位于目标系统上。NET框架中的P/Invoke封送拆收器在幕后使用
LoadLibrary
。此处给出了默认的搜索顺序(假设未指定完整路径):在.NET Framework中的P/Invoke封送拆收器在幕后使用
LoadLibrary
。此处给出了默认搜索顺序(假设未指定完整路径):