u_fgetfile から返されたハンドルを fseek/fread 関数に渡そうとしています。
アプリケーションをデバッグ ランタイム ライブラリ (/MTd /MDd) にリンクするとクラッシュは発生しませんが、静的バージョンにリンクすると、次の単純なコードがクラッシュします。
#include <stdio.h>
#include "unicode\ustdio.h"
int main()
{
UFILE* file;
file = u_fopen("C:\\test.txt","r",NULL,"UTF-8");
fseek(u_fgetfile(file),3,SEEK_SET);
}
これは、ICU の公式ビルドと、Visual Studio 2012 でカスタム ビルドをビルドした場合の両方で発生します (デバッグまたはリリースでの ICU のビルドは問題ではありません)。
私が見つけた唯一のことは、FILE構造に不一致があるように見えることですが、実際にはわかりません。
編集:
この質問に報奨金を追加する一環として、再現プログラム (上記のコードと同じ) とソースとバイナリを含む icu の両方を含む完全に機能する VS2012 プロジェクトを次に示します。ここから入手してください: http://goo.gl/urTuU