【问题标题】:Error while loading unmanaged dll written in C into visual studio 2019将用 C 编写的非托管 dll 加载到 Visual Studio 2019 时出错
【发布时间】:2020-12-19 11:11:55
【问题描述】:

我收到错误“System.DllNotFoundException:

无法加载 DLL 'swedll32.dll':对内存位置的访问无效。 (来自 HRESULT 的异常:0x800703E6)'

Form1 加载时。该 dll 是用 C 编写的 32 位本机或非托管 dll。我使用的是 64 位 Windows 10 和 Visual Studio 2019。我尝试了很多方法,但没有结果。

我尝试过这种方式: 禁用 DEP 和 UAC, 以管理员身份运行 VS 2019, 编译 - 目标 CPU - 任何 CPU 到 X86

请帮忙。谢谢

  Public Class Form1

     Public Declare Sub   swe_set_ephe_path Lib "swedll32.dll" Alias "_swe_set_ephe_path@4" (ByVal path As String)

  End Class

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load        

    swe_set_ephe_path(System.IO.Path.GetDirectoryName(Application.ExecutablePath) & "\SwEph")

   End Sub

【问题讨论】:

  • 0x800703E6 非常具体,用于表示 winapi 错误 998。它不是“找不到文件”错误。 DLL 的 DllMain() 函数因 AccessViolationException 而失败,这是非常严重的事故。对于像这样的封闭源代码库,您需要木星和土星在水瓶座进行诊断,请向图书馆所有者寻求支持。

标签: .net vb.net visual-studio-2019


【解决方案1】:

每当您收到此类错误消息时,您应该知道缺少 dll。

查找文件

您需要在磁盘的某处有 swedll32.dll。如果没有找到,则download它。

添加 dll

现在,假设您已经拥有该 dll,您需要将其添加到您的项目中。现在,如果您使用 Visual Studio,正如您的标签所建议的那样,那么您需要导航到 Project -> Add Reference 并选择 Add Reference。浏览到 dll 文件并将其添加到项目中。阅读更多here

【讨论】:

  • 显然答案被否决了,但是,我不明白需要改进什么。有人可以澄清一下吗?谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2012-03-26
  • 2017-10-03
  • 2010-11-15
  • 1970-01-01
  • 2013-05-23
相关资源
最近更新 更多