COMクラスを呼び出すC#Winformsアプリケーションがあります。 Visual Studioを使用してデバッグする場合、C++コードにステップインしてS_OKを返しますが、ビジュアルスタジオがハングしてアプリケーションがクラッシュすると関数が返されます。プログラムの実行を停止するには、VSプロセスでプロセスを終了する必要があります。私はビジュアルスタジオの外でアプリを実行する場合、アプリケーションは単にクラッシュします。COMクラスへのメソッド呼び出しでアプリケーションがクラッシュする
すべてがうまくいきましたが、私はこの問題を引き起こす可能性があります。
何か助けていただければ幸いです。
LicenceData data = new LicenceData();
ILicenceReader reader = new LicenceReader();
reader.ReadLicenceFile(ref data, filePath);
:ありがとう
Sjの
は、これは私がCOM DLLを参照し、VSがC#アプリケーションで相互運用機能と使用率を生成することができましたインターフェース定義
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通話についての詳細を提供することができますか?さらに、OS、CPUアーキテクチャ(32ビットvs. 64ビット)、コンパイルされたCPUアーキテクチャ(AnyCPUとx86)などに関する情報はすべて参考になるかもしれません。 – Reddog
スタックに問題があると思われます。 COM関数のシグネチャ、C#での宣言方法、呼び出し方法を表示できますか? – Steve
SEHで停止するようにデバッガを設定します(メニュー - >デバッグ - >例外のVS)。デバッガを接続してアプリケーションを実行しますが、ステップバイステップの実行は使用しないでください。何が例外が報告されるかを見る –