如何在 c++ 中获取 C# 程序集的 GUID(程序集属性)

发布于 2024-10-27 11:12:16 字数 166 浏览 3 评论 0原文

我正在尝试从 c++ (VC++ 10) 读取 C#.net 程序集的 GUID 属性

我应该提到的是,我不想使用 .net 或 .net 反射。寻找一种纯C++的方式。

解决办法是什么?

提前致谢。

I am trying to read GUID attribute of a C#.net assembly from c++ (VC++ 10).

I should mention that, I don't want to use .net or .net reflection. looking for a pure c++ way.

what is the solution ?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暖心男生 2024-11-03 11:12:16

您需要使用非托管元数据 API

,尤其是IMetaDataImport::EnumCustomAttributes 方法

这将是一项相当艰巨的工作...这是一个链接这提供了一个很好的起点(它是 C#,但思想完全相同,并且实际上更容易用 C++ 编程): 从程序集中读取类型

You need to use the Unamanaged Metadata API

and especially the IMetaDataImport::EnumCustomAttributes Method

That's going to be quite a work... Here is a link that gives a good starting point on this (it's C#, but the ideas are exactly the same, and is in fact easier to program in C++): Reading types from assembly

阳光下慵懒的猫 2024-11-03 11:12:16

查看 CodeProject 上的.NET 文件格式 MetaSection。

Check out the The .NET File Format MetaSection over at CodeProject.

泅渡 2024-11-03 11:12:16

我了解您不想使用反射或.net。
但是,您确实希望从使用 .NET 构建的 C# dll 中获取 GUID。

C# 开发人员向基于 COM 的开发人员提供其类库的常见方法是使用 tlbexp.exe(类型库导出)工具导出类型库文件。

然后,COM 开发人员可以在其 COM 代码中使用 .tlb 文件。

当 C# 开发人员构建 dll 时,他们要么手动将 Guid 放入 AssemblyInfo 级别(在 .NET 中),要么编译器在构建 dll 时自动生成 Guid。

展示如何构建 COM 客户端 (C++) 以使用 COM 服务器 (C#)
http://msdn.microsoft.com/en -us/library/aa645738%28v=vs.71%29.aspx

注意,本文中引用了另一个工具regasm.exe,它注册dll,同时可以导出tlb,但不是必须的要以开发人员身份在系统上注册 dll

,您只需使用 tlb 文件

i understand you don't want to use reflection or .net.
You do however want to get the GUID from a C# dll you have, that was built with .NET.

The common way C# developers make their class libraries available to COM-based developers is to use the tlbexp.exe (type library export) tool to export a type library file.

The COM-developer can then use the .tlb file in their COM code.

When the C# developer builds the dll they either put the Guid manually in the AssemblyInfo level (in .NET) or the compiler will generate the Guid automatically when building the dll.

show how the COM client (C++) is built to use the COM server (C#)
http://msdn.microsoft.com/en-us/library/aa645738%28v=vs.71%29.aspx

note that in this article refers to another tool regasm.exe which registers the dll and can export the tlb at the same time but it is not necessary to register the dll on your system

as a developer you can just use the tlb file

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文