DLLエントリポイントいろいろ解決
- 動的コード生成でDLLエントリポイントを呼ぶようになった
- Yumeさんが対応してくれて、MONALIBC.DLLがStream初期化コードを呼ぶようになった
- ところが Mona のPE動的リンカのバグでリンクエラーに。
- バグ修正
- リンクは通るがNULLアクセスで落ちる
- DLLエントリポイントが call された時点ではメモリ初期化処理を呼ばれていないので operator new 呼出しで死んでいた
- MONAPI.DLLのdllmainでメモリ初期化処理を呼ぶようにした(Makefileで -e _dllmainするの忘れててさらにハマる)
- 全部直った!(気がする)
というわけで
- monalibcの dllmainが正しく呼ばれるようになりました
- crt/crt.cpp において
monapi_initialize_memory(64*1024*1024);
と呼んでいますが、dll経由の場合はMONAPI.DLLのdllmainからその関数は既に call されますので、 extern "C" int memoryInitialized変数を参照するようにした方が良いかもです.
お手数ですが確認をおねがいします。
→id:shotaro_tsuji
おまけ
_printfというのを用意しました。syscall_print につながっているので信頼できます(何
ん?
まだ print hello が動かないね.
なんだろ。