64 ビット マシンに切り替えて Visual Studio 2012 の使用を開始するまで、以前の Bloomberg Data Type Libary (blpdatax.dll) を C# で正常に使用していました。今では、BlpData インターフェイスでメソッドを呼び出そうとするたびに結果が返されます。アクセス違反です。
追加情報:
私のターゲット マシン タイプは x86 です。
Bloomberg Data Type Library を使用する Perl スクリプトは、引き続き正常に動作します。
サードパーティの 32 ビット COM オブジェクトへの参照を使用するその他の C# プログラムも正常に動作します。
これがコードです。サブスクライブ呼び出しで例外が発生し、Win32 例外 (アクセス違反) として記述されます。
void Test()
{
BlpData blp = new BlpData();
blp.ActivateRealtime = false;
object res;
object symbols = "ADX US Equity";
object fields = "PX_LAST";
object start = new DateTime(2013, 1, 1);
object end = new DateTime(2013, 1, 31);
int cookie = 0;
blp.Subscribe(symbols, cookie, fields, Type.Missing, Type.Missing, out res, Type.Missing);
object[,] result = (object[,])res;
Console.WriteLine(result[0,0].ToString());
}
長期的な解決策は、新しい Bloomberg API を使用することであることはわかっていますが、現時点ではその選択肢がありません。どんな助けでも大歓迎です。