Ich habe eine C# Winforms-Anwendung, die einen Aufruf an eine COM-Klasse aufruft. Beim Debuggen mit Visual Studio wird in den C++ - Code verzweigt und S_OK zurückgegeben, aber wenn die Funktion zurückkehrt, bleibt Visual Studio hängen und die Anwendung stürzt ab. Ich muss Prozess auf dem VS-Prozess beenden, um das Programm zu beenden zu beenden. Wenn ich die App außerhalb von Visual Studio starte, stürzt die Anwendung einfach ab.C# -Anwendung stürzt bei Methodenaufruf zu COM ab Klasse
Alles funktionierte gut und ich habe keine Ahnung, was ich getan haben könnte, um dieses Problem zu verursachen.
Jede Hilfe wird geschätzt. Dank
Sj
Dies ist die Schnittstellendefinition
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;
};
ich die COM-DLL verwiesen haben und erlaubt VS die Interop und die Verwendung in der C# Anwendung zu generieren:
LicenceData data = new LicenceData();
ILicenceReader reader = new LicenceReader();
reader.ReadLicenceFile(ref data, filePath);
Danke für Ihre Hilfe.
Vielleicht könnten Sie Details zu den COM-Anrufen bereitstellen, die Sie vornehmen? Darüber hinaus könnten Informationen über Betriebssystem, CPU-Architektur (32 Bit vs. 64 Bit), kompilierte CPU-Architektur (AnyCPU vs. x86) usw. hilfreich sein. – Reddog
Scheint ein Problem mit dem Stapel. Können Sie die Signatur Ihrer COM-Funktion anzeigen, wie deklarieren Sie in C# und wie nennen Sie es? – Steve
Konfigurieren Sie den Debugger auf SEH zu stoppen (Menü-> Debug-> Ausnahmen für VS). Führen Sie die Anwendung mit dem angehängten Debugger aus, aber führen Sie keine schrittweise Ausführung aus. Sehen Sie, welche Ausnahme gemeldet wird –