我有一个调用 COM 类的 C# Winforms 应用程序。使用 Visual Studio 进行调试时,它会进入 c++ 代码并返回 S_OK 但是当函数返回时,Visual Studio 挂起并且应用程序崩溃。我必须结束 VS 进程上的进程才能停止程序运行。如果我在 Visual Studio 之外运行应用程序,应用程序就会崩溃。
一切正常,我不知道我可能做了什么导致这个问题。
任何帮助表示赞赏。谢谢
Sj
这是接口定义
typedef struct
{
long ExpiryData
BSTR IssuedBy;
} LicenceData;
[
object,
uuid (5A734F95-EABE-440B-8B7E-0F73538A24AC),
pointer_default(unique),
helpstring("ILicenceReader Interface"),
]
interface ILicenceReader : IDispatch
{
HRESULT ReadLicenceFile ([in, out]LicenceData* plicenceData, LPCTSTR filePath);
};
[
uuid(C2833A21-6586-4648-ABC8-D42BC3225699)
]
coclass LicenceReader
{
[default] interface ILicenceReader;
};
我已经引用了 COM dll 并允许 VS 生成 Interop 和 c# 应用程序中的用法:
LicenceData data = new LicenceData();
ILicenceReader reader = new LicenceReader();
reader.ReadLicenceFile(ref data, filePath);
谢谢你的帮助。