gpt4 book ai didi

c# - ASP.NET 中的 P/Invoke(Dll 未找到异常)

转载 作者:行者123 更新时间:2023-11-30 04:28:45 25 4
gpt4 key购买 nike

我有一个通过 C++ 项目生成的 .dll。我必须在我的 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();
}

由于我无法将 C++ dll 作为引用直接添加到我的 ASP.NET 项目中(因为它不是 .NET 程序集),所以我只是复制到顶级目录中。 ( ASP.NET 项目名称-> 右击-> 添加现有项)

现在,当我尝试运行该项目时,出现以下错误:

异常(exception):

Unable to load DLL 'MyFav.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

有什么建议吗? .dll 保存在哪里?

最佳答案

.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 有其他 Unresolved 依赖项。你可以使用 Dependency Walker检查这些。

关于c# - ASP.NET 中的 P/Invoke(Dll 未找到异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9885977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com