C# で使用できるように、C++ で定義されたライブラリをリンクしようとしています。C# でアクセスしようとしてCString PastUsed
いる C++ の変数を保持する があります。
C++ では、変数の値をPastUsed
「.odl」ファイルに
BSTR PastUsed
. DISP_PROPERTY_EX
配車マップとして使用しています。
DISP_PROPERTY_EX(Cpctr, "PastUsed", GetPastUsed, SetPastUsed, VT_BSTR).
から String 変数の値を返しますGetPastUsed
。PastUsed
しかし、この値は(.odl で定義されているように)に保存されているとは思いません。PastUsed
C# でこの変数 (.odl から) にアクセスしようとすると、com 例外が発生するため、これが発生していると想定しています。
C++で定義された変数を取得するために私がc#で持っているコードは次のとおりです。
private void GetPastUsedDes_Click(Object eventSender, EventArgs eventArgs)
{
if (CheckInvalidButtonClick())
{
return;
}
PrintLine("Dumping past Used");
AxPBSPRINTLib.AxPBSprint sPrint = mPBSPrintCtrl;
String str = mPBSPrintCtrl.PastUsed;
String str = Print.PastUsed;
}
(PastUsed
上記の c# のもの) は、c++ で保持されている変数を含むはずの同じ文字列Pastused
です (私の最初の投稿で説明したように)。C# で String str のブレークポイントに到達するとすぐに、例外が発生します。
Print.PastUsed = 'Print.PastUsed' threw an exception of type 'System.Runtime.InteropServices.COMException'