2017年5月11日木曜日

真・CppSharp動かし隊(コーヒー淹れまっか?




とりあえず、最新版のCppSharpがとんでもないくせもので、一筋縄では動かない代物でした・・・w

まず、公式のソースコードがMacでないとLLVMはビルドできない・・・これは普通にあることですね・・・w なので、配布先にあるDLLを使用したらWindowsでも動くわけですよ!楽勝です!

それで、 ConsoleDriver.Run(new SampleLibrary); するわけです!

動きません!


なんで動かないんだ!ってことで夜中の1時30頃まで徹夜して5時間くらい悩みました・・・w

まず、
CppSharpBinaries-master
これをダウンロードしました。
それでいて、ダウンロードトップのCppSharpのソースコードを使ったら、ビルドが通りません!





それで、デバッグしたら、VisualStudioがいるよ~みたいな表示がでたので、なんでVisualStudo2017つかってるのにビルドできないんだって考えたけど、わからなかったので、古いファイルを探すことにしました。



ダウンロードページの一番下のNextボタンの次のページにありました。
それで、この一番上のDLLと最初にDLしたソースファイルでいけるだろうっと思ったら、動きませんでした・・・w そのときデバッグエラーにVisualStudio2017が必要とでました・・・w 
なので、ソースファイルとVsiualStudoのバージョンがいっちしてないと動かないということがわかりましたw


次に、DLLをVs2015の0.84にして、ソースコードを↑画像の一番下のにしてVisualStudo2015で動かしたら、MSVCToolchain.csがないとでましたw
なので、C:\projects\cppsharp\srcにsrcフォルダをコピーました(もしかしたら普通にC直下に置かなくても動くかもしれませんが、動かないときはお試しください)
CppSharp.CLI.exeの方でコピーが必要でした・・・w

今度は見事にCppSharpが動きました・・・w

あと、Qiitaのページだと赤丸が一番下のDLLにありましたw 以前までは最新のDLLで動かせたみたいですね・・・w 本当にCppSharpの仕様変更はよくわかりませんw もしかしたら、これから先まだまだCppSharpは仕様変更あるかもしれませんね・・・w

それから、プロジェクトで出力先にはCppSharp.Parser.dllと CppSharp.CppParser.dllはコピーして貼り付けてください。この二つのdllはC++で作られてるので、参照に追加できません・・・w Comならいけるんでしょうが、Com参照したことないのでよくわかりませんw


参考元:CppSharpへのいざない



(補足)DLL動かないときに試したんですが、CppSharpBinaries-masterのCppSharp.CLI.exeで動くかなって思ったんですけど、ソースコードみたら動かない感じですね・・・w


 本来コマンドラインのArg変数からパスとか取得するはずなんですけど、ソースコードみたら、ArgはL=とかのコマンドにしか対応してないです。


そして、messagesリストからパス追加する仕組みになってたんですけど、このmessagesリストに追加するものが見当たりませんでした・・・なのでCppSharp.CLI.exeが動くかどうかわかりません・・・もしかしたら動かしたら動くのかもしれません・・・w 詳しく動作確認する前に面倒だったのでDLLの方を動かせたので動くかはわからずじまいでしたw
よくみたら、Argからファイル追加する部分がありました・・・急いでたので見落としてましたw

あと、ConsoleDriver.Runしなくても、Generatorクラス使ったら、動かせるかなって思ったんですけど、なぜか抽象クラスになってて動かせませんでした・・・w

CppSharpの詳しいドキュメントが公式で公開されるのを祈るばかりです・・・w


とりあえず、CppSharpのGUI版作ろうかと思いますw オープンソースの予定ですw そんなに小難しいものでもないですが、あったらすごく便利なんですよねw 昔はCppSharpもGUI版をユーザーさんが公開してたような気がしてたんですけど、CppSharp使わないからほっといたら、いつのまにかなくなってました・・・w

あと最近はコーヒーは飲まないですね・・・w 安物のキャラメルコーヒーはなんか腕のとこにシミみたいな塊が残りましたし・・・w コールタールでしょうか?海外製だとよくわかりませんねw あとコーヒーをたまにしか飲まないと寝れないですねw ノンカフェインコーヒーが飲みたいですw

「次回!CppSharpがGUI版になって勝手に帰ってくる!」