我有一个.dll,我生成了一个C ++项目。我必须在我的ASP.NET项目中使用这个dll,并且我已经在我的项目中编写了相同的DllImport函数。
App_Code
内的静态类有一些DllImport
函数
public static class Functions
{
[DllImport("MyFav.dll", EntryPoint = "fnmain",
CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern StringBuilder fnmain();
}
由于我无法直接在我的ASP.NET项目中添加C ++ DLL作为引用(因为它不是.NET程序集),所以我只是复制到顶级目录中。 (ASP.NET项目名称 - >右键单击 - >添加现有项目)
现在,当我尝试运行该项目时,出现以下错误:
例外:
无法加载DLL“MyFav.dll”:找不到指定的模块。 (HRESULT异常:0x8007007E)
有什么建议吗? .dll在哪里保存?
答案 0 :(得分:1)
.dll
应该位于asp.net应用程序的\bin
文件夹中。
显然有关于如何解决dll的规则。见Dynamic-Link Library Search Order on msdn
您也可以尝试:
[DllImport("C:\path_to_dll\MyFav.dll", EntryPoint = "fnmain",
CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern StringBuilder fnmain();
如果所有这些都不起作用,那么您的MyFav.dll
可能还有其他未解决的依赖项。您可以使用Dependency Walker来检查这些内容。
答案 1 :(得分:1)
我遇到了类似的错误,但使用的是Mono的XSP服务器。对于此服务器,解决方案是将dll放在Web应用程序的根目录中(./bin
的父文件夹)。这恰好也是当前的工作目录(当从Xamarin Studio运行时),这是相关的。
答案 2 :(得分:0)
如果要与out路径一起使用,请复制项目文件夹中的dll
到bin目录
。