在 Visual Studio 2010 中从 Win32 调用方调试 .Net4 COM 注册程序集

2024-02-20

这是一个非常简单的设置,我简直不敢相信,但到目前为止我没有发现任何人遇到同样的问题......

在VS2010中创建.Net4类库。创建一个最简单的 COM 对象:

[ComVisible(true)]
[Guid("CD157EBC-C89D-40b6-B531-E85FF4B3AE9A")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IAcorn
{
    bool Foo(string moo);
}


[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
[Guid("854B7690-C1C4-40c4-8059-B4F3450B30D0")]
public class Acorn : IAcorn
{
    public Acorn()
    {
    }

    public bool Foo(string moo)
    {
        return true;
    }
}

为程序集设置“注册 COM 互操作”选项。将“平台目标”设置为 x86。

使用Delphi创建一个Win32客户端,导入对象,使用正常实例化实例化它(翻译为 CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER 或 CLSCTX_LOCAL_SERVER,IUnknown,结果))

运行Win32应用程序,一切正常。

尝试从 VS2010 调试 COM 对象。设置类库的“调试”选项来启动外部程序,指向刚刚创建的可执行文件。当您从 VS210 启动 Win32 应用程序时,程序在尝试实例化 COM 时崩溃(使用 StackOverflow)。

将目标框架更改为.Net 3.5 从VS2010启动调试,一切正常,包括调试。

注意 - 使用 CLR 托管或非托管导出 COM 实例化时,这也是一个问题。这两种方法都适用于.Net4,但无法进行调试。

问题是标准的 - 为什么会发生这种情况?有解决方法吗?


.NET框架和Delphi可能在FPU控制字中设置或期望不同的值。

通过在调用 .NET 代码之前显式设置寄存器并在 .NET 代码完成后重置它,可以避免该问题:

如何设置和恢复 FPU CTRL 寄存器? https://stackoverflow.com/questions/191368/how-can-i-set-and-restore-fpu-ctrl-registers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Visual Studio 2010 中从 Win32 调用方调试 .Net4 COM 注册程序集 的相关文章

随机推荐

  • C# 在添加的线程内触发事件

    考虑两个类 Producer and Consumer 与经典模式相同 每个都有自己的线程 是否有可能Producer拥有一个Event which Consumer可以注册并当生产者触发事件时 消费者的事件处理程序在其自己的线程中运行吗
  • android.app.Application 单例实例被重新创建

    我在用android app Application创建单个实例 出于某种原因 我看到 Android 杀死了我的Instance并重新创建 调用onCreate 我怎样才能阻止这种情况发生 我尝试添加日志onTerminate and o
  • Angular 2自定义表单验证不会阻止调用onSubmit

    也许我很愚蠢 但我一生都无法弄清楚如何获得自定义表单验证以阻止验证失败时调用 onSubmit 在创建新控件时 我尝试使用 HTML 语法 通过将自定义验证关键字直接添加到表单组件的 htmlTemplate 中 以及通过代码 我也没有看到
  • 如何防止在c#中最大化无状态形式

    我创建了一个表单并设置了它FormBorderStyle财产给none 当我按下Windows UP形式将是最大化 如何防止表单最大化 我试过 private void logIn Resize object sender EventArg
  • 如果 pandas 末尾有“-”符号,则将值转换为负浮点数

    在数据框中 我有一个名为 Val 的列 其中有浮点值 但负值由末尾的 号表示 因此它被解释为对象 IE gt gt gt df Val drop duplicates sort values 5 0 00000 1873 0 20000 4
  • Stripe 动态付款

    我正在与 Stripe 作斗争 我正在使用 PHP 并且正在尝试建立一个简单的商店 没有 CMS 想知道如何将金额传递到 charge php 以便我可以对不同的产品收取不同的金额 这里是我的代码 charge Stripe Charge
  • 为什么JDK NIO使用这么多anon_inode文件描述符?

    我正在使用 Sun 的 JDK 1 6 0 26 和 NIO 带有 Netty 在 lsof 中我看到数百个文件描述符anon inode lsof np 11225 fgrep w anon inode java 11225 nobody
  • 等待多部分图像发送完成

    我正在 iOS7 中实现一个应用程序 它是一种社交网络应用程序 其中包含带有图像的帖子和保存从客户端发送的所有数据的后端 iOS客户端通过json发送帖子信息 发送信息后 它开始使用多部分形式发送图像AFNetworking 发送图像时需要
  • Java 中的 Lambda 表达式?

    我需要将部分项目从 C 切换到 Java 但在此之前 我想仔细 全面地比较两种语言 关于lambda表达式 我可以通过C 编写非常优雅的代码 问题是如何在Java中优雅地实现相同的功能 提前致谢 class Program enum Gen
  • Java Swing JFrame 背景未显示

    我不知道为什么我的 Jframe 上没有显示背景颜色 下面是我尝试过的代码 当我打电话时 AnimatedDialogBox animatedDialogBox new AnimatedDialogBox Saving TransSet f
  • 使用 php 和 dompdf 在 pdf 中导出变音符号

    我在导出 PDF 文档中的重音字符 例如 时遇到问题 这些字符通常存储在数据库中 但是当我尝试导出到 PDF 时 字符 变换为 C5 9F等等 我认为问题出在 dompdf 库上 现在我做preg replace但这不是一个好的解决方案 有
  • Spring Data + Redis 带自动递增键

    我正在尝试使用 Redis 进行 Spring 数据 CRUD 操作 但主要需要将自动增量密钥存储在 Redis 中 我尝试过使用Redis对SpringData进行简单的CRUD操作 但没有自动递增键功能 我怎样才能实现这个目标 如果您使
  • 查询中跨越多行的 SQL 字符串值

    UPDATE 简介可能包含撇号 请参阅更新的示例 我有一个 SQL 查询 它的值跨越多行 导致查询失败 UPDATE User SET UserId 12345 Name J Doe Location USA Bio I m a bio t
  • Typescript 对象声明,其中每个 prop 都有自己的泛型

    我正在尝试创建更动态的对象类型 现在我有以下内容 interface MyGeneric
  • ava.lang.NoClassDefFoundError:使用引导类加载器找不到类;没有可用的堆栈

    我在用docx4j从 SD 卡读取 Docx 文件 我有问题org apache log4j Logger图书馆 我什至尝试过从外部添加它 但它仍然给我同样的问题 构建 gradle apply plugin com android app
  • Python 中 switch 语句的替代品?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想用 Python 编写一个函数 根据输入索引的值返回不同的固定值 在其他语言中我会使
  • 使用 jQuery 通过 GET 方法调用 ASP.NET Web 服务函数

    我尝试使用 jQuery 通过 GET 方法调用 Web 服务函数 但遇到问题 这是一个网络服务代码 WebService Namespace http something com samples ScriptService WebServ
  • Firebase BigQuery 架构迁移:移至分区表?

    我收到了一封电子邮件 其中包含将 BigQuery 中之前的 Firebase 表迁移到新架构的说明 他们指出了这些说明 https support google com analytics answer 7029846 migration
  • 如何在tridion页面中包含动态组件演示?

    如何在页面中包含 引用动态组件模板 我创建了一个动态 CT 并发布了它 但想在页面中呈现其演示文稿 请建议 提前致谢 有很多方法可以在页面上添加动态呈现 直接方法 为此 您的组件演示应允许在页面上进行 查看允许在页面上使用动态装配 与所有其
  • 在 Visual Studio 2010 中从 Win32 调用方调试 .Net4 COM 注册程序集

    这是一个非常简单的设置 我简直不敢相信 但到目前为止我没有发现任何人遇到同样的问题 在VS2010中创建 Net4类库 创建一个最简单的 COM 对象 ComVisible true Guid CD157EBC C89D 40b6 B531