【问题标题】:How to export all methods in an unmanaged dll to managed c#?如何将非托管 dll 中的所有方法导出到托管 c#?
【发布时间】:2012-04-27 15:36:42
【问题描述】:

我有一个包含 10 个方法和 12 个属性的 c++ dll,是否有任何方法或任何应用程序可以导出要在 c# 中使用的方法的 p/invoke 格式? 我已经使用 OLE 查看器来检查所有方法,例如:

[id(0x00000013)]
BSTR 获取CPUID(
简短的 BeginAddress,
短结束地址);

但我不知道如何在 c# 中使用此函数。

【问题讨论】:

  • DLL 没有属性...看起来您想使用 DLL 提供的 COM 对象,在这种情况下,这是完全不同的问题。
  • 对不起,我的解释不好,你说得对,文件是 OCX 文件。如果可以,请提供帮助。
  • 您正在寻找“COM互操作”,搜索它或以msdn.microsoft.com/en-us/library/aa645736%28v=VS.71%29.aspx开头
  • 哇,这太棒了 Alexei Levenkov,但是当我尝试从我的对象中创建一个实例时,我会收到此错误:Retrieving the COM class factory for component with CLSID {0CA5A93D-F6BD -4398-809A-9F767276EF77} 由于以下错误而失败:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。
  • 看来我必须注册ocx文件,但在我的情况下我不能这样做,我必须直接使用方法

标签: c# .net dll unmanaged


【解决方案1】:

或许这篇文章对你有帮助

http://www.codeproject.com/Articles/18032/How-to-Marshal-a-C-Class

如果这有帮助,请告诉我。

【讨论】:

  • 这不是 Stackoverflow 上答案的好格式。要么将链接作为对原始问题的评论发布,要么花一些时间将文章中最有用的部分提取到您的答案中 - meta.stackexchange.com/questions/13369/…
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多