VS.NET 2015でopensslをビルドするときのメモ
__iob_funcが未定義と怒られたので調べてみた自分用メモ
これはstdin/stdout/stderrのdefineが変わっているのが原因のようだ。
以下の修正をすることで解消。
修正ファイル:e_os.h
300行目付近で
# define stdin (&__iob_func()[0])
# define stdout (&__iob_func()[1])
# define stderr (&__iob_func()[2])
# define stderr (__acrt_iob_func(2))
これはstdin/stdout/stderrのdefineが変わっているのが原因のようだ。
以下の修正をすることで解消。
修正ファイル:e_os.h
300行目付近で
# define stdin (&__iob_func()[0])
# define stdout (&__iob_func()[1])
# define stderr (&__iob_func()[2])
となっている箇所を
# define stdin (__acrt_iob_func(0))
# define stdout (__acrt_iob_func(1))# define stderr (__acrt_iob_func(2))
と変更してやる。
もしくは、
#ifマクロで「_MSC_VER>=1900」の場合だけ「__acrt_iob_func」に
変更するように修正を入れる。
コメント