gpt4 book ai didi

c# - 在非托管 C++ 项目中使用 C# COM -> 0x7697C41F (KernelBase.dll) 处的第一次异常

转载 作者:太空狗 更新时间:2023-10-29 22:19:41 24 4
gpt4 key购买 nike

我试图在非托管 Visual C++ 解决方案中调用 C# COM 项目的方法,但我不断收到下一个错误

First-chance exception at 0x7697C41F (KernelBase.dll) in Program.exe: 0x04242420 (parameters: 0x31415927, 0x6F310000, 0x00BBDAE8).

在下一段代码中

SalesForceNew::IMyObjectClassPtr p;
p.CreateInstance(__uuidof(SalesForceNew::TestObject)); // error
SalesForceNew::MyObject mo = p->getObject(1, "a");

然而 mo 的值符合预期 (5, "aa")。

我用这行代码导入了 tlb 文件:

#import "C:\Users\Bob\Desktop\ComTest\SalesForceNew\bin\x86\Debug\SalesForceNew.tlb" named_guids

C#工程如下:

界面:

using System.Runtime.InteropServices;

namespace SalesForceNew
{
[ComVisible(true)]
[Guid("22901ACD-CA30-4D3E-B84B-73B707026AE5")]
public interface IMyObjectClass
{
MyObject getObject(int i, string s);
}

[ComVisible(true)]
[StructLayout(LayoutKind.Sequential)]
public struct MyObject
{
public int Getal;
public string Text;
}
}

实现接口(interface)的类:

using System.Runtime.InteropServices;

namespace SalesForceNew
{
[ClassInterface(ClassInterfaceType.None)]
[Guid("234A2A35-F270-458D-A67B-C834EB794B27")]
[ComVisible(true)]
public class TestObject : IMyObjectClass
{
public MyObject getObject(int i, string s)
{
return new MyObject() { Getal = i * 5, Text = s + s };
}
}


}

我检查了 C# COM 项目属性中的选项 Register for COM interopMake assembly COM-Visible


更新:如果我们将 C# COM 项目的框架版本更改为 2.0、3.0 或 3.5,则不会出现该错误。它仅在框架版本为 4.0 或 4.5 时显示。

最佳答案

异常代码小于0x80000000的异常是非致命异常。它们往往被用来传递信息。这双鞋适合这里,异常代码 0x04242420 已被逆向工程为 CLRDBG_NOTIFICATION_EXCEPTION_CODE,在谷歌查询中输入数字以查看命中率。 This answer来自 Microsoft 员工的信息可能是最可靠的:

Out of curiosity I did a little digging and found that this is actually an undocumented exception (CLRDBG_NOTIFICATION_EXCEPTION_CODE) that is apparently an addition to the IPC protocol used by the managed debugger in the 4.0 CLR. It should be entirely safe to ignore.

关于c# - 在非托管 C++ 项目中使用 C# COM -> 0x7697C41F (KernelBase.dll) 处的第一次异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13724006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com