我有一个c#mvc应用程序,它使用c ++ dll进行一些较重的统计计算。当我在本地运行时,一切正常,但在我部署的应用程序上,我得到的只是
异常:无法加载DLL'HandCalculatorDll.dll':找不到指定的模块。 (HRESULT的例外情况:0x8007007E)
c#模型正在使用
[DllImport("HandCalculatorDll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern bool CalculateWinner(int[] req);
public RoundResult CalculateWinnerDll(List<Hand> hands, List<Card> board)
{
// set up the request
// calls the dll
var success = CalculateWinner(reqArr);
// interpret the response
return result;
}
我尝试了几种不同的东西,但似乎没有什么能用于部署的项目。我尝试将dll添加到项目中并将其从项目中删除(基于不同的建议)。我尝试了相对和绝对路径的几种变体。我用了
System.Web.Hosting.HostingEnvironment.MapPath("/bin");
找到托管pc上的绝对路径,将dll放在该bin文件夹中,并将该路径用作DllImport属性。
不幸的是,我发现的大多数建议/解决方案仅适用于本地调试。有谁知道如何解决这个问题?
更新 我将整个项目复制到另一台计算机上运行它,并且该计算机抛出了我发布时出现的“无法加载DLL”错误。我在第二台计算机上和在我的家用计算机上以完全相同的方式运行所有内容,并且我验证了该文件存在。现在我真的很困惑......
答案 0 :(得分:0)
尝试右键单击项目中的引用,单击属性并确保将其设置为本地复制。