【问题标题】:Calling a DLL from C# (VS2008)从 C# (VS2008) 调用 DLL
【发布时间】:2009-10-23 16:05:41
【问题描述】:

我有一个包含一些 Excel 插件的 DLL (Test.dll),我不知道这是用哪个版本构建的(可能是 VB6,但我不确定)。

当我尝试在 VS2008 中引用此 DLL 时,我收到消息

无法添加对 DLL 名称> 的引用。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。

如果有人能在这方面帮助我,那就太好了。

感谢任何帮助。

感谢和问候, 图沙尔

【问题讨论】:

  • 你想用这个插件做什么?在 .NET 项目中,您可以直接引用 .NET 程序集和 COM 组件,因此如果您的 DLL 不是这些,您的首要任务就是找出它使用什么技术来公开功能。

标签: c# dll


【解决方案1】:

在我看来,您尝试加载的 DLL 不是 托管 DLL,也不是 CLR 可以视为托管的。

一种解决方案是使用托管 C++ (C++/CLI) 围绕 DLL 构建包装器。另一个是使用 PInvoke,它在here 中进行了解释,我遇到了一个工具 here

你也可以看这个帖子:Unable to Use DLL of VB6 Into ASP.NET

希望这些对你有用, 阿萨夫

【讨论】:

  • @Asaf:感谢分享观点,但我不清楚使用托管 C++ 包装器,我可能会问这个问题 - 如何创建我无法创建的 C++/CLI 包装器甚至参考???另外,我怎么能使用 PInvoke 呢。请您澄清一下。
  • @tush1r:您可以使用 PInvoke(直接来自 C#)或创建 C++/CLI 包装器。两者都做没有用。我会尽快尝试添加更多关于如何创建这样一个包装器的内容。
  • @tush1r:您可以了解有关混合模式 c++ 程序集的更多信息 - 同一程序集中的本地和托管 c++ - 在这里:msdn.microsoft.com/en-us/library/x0w2664k%28VS.80%29.aspx 使用混合模式,您可以使用本地 c++ 调用 DLL 和托管将其暴露给 .Net 世界。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
相关资源
最近更新 更多