adminメインのフォームFormMainがあると仮定プロジェクトにリソース(*.resx)を追加、ここではStringResource.resxとStringResource.ja-JP.resxを追加する。ret;}sInに渡された文字列がリソースにあればそれを返す。なければそのまま返す。admin普通にwin32プロジェクトを作成/NODEFAULTLIBオプションを有効に、これでCRTはリンクされない。ビルドするといろいろリンクエラー、これはCRTの機能を呼んでいるから出る。SW_SHOW));}これでビルドできて動いた。memsetを使っていると問題がある。{0};このようなコードでもコンパイラはmemsetを呼ぶようで、これが見つからないと怒られる。dist;}これでビルドできたがVC6だと今度はintrinsicの関数を定義するなと怒られる。sp3で挑戦まずMingWをインストールする。デフォルトのフォルダへmsysは今回は使わないと思うけどとりあえずインストールgcc-g++は必須のはず。次にjavaをインストール。8.66をインストールした。PATH関係でエラーが出るかもしれないのでいったんログオフ。CDTのインストール、eclipse.orgへ行ってCDTをダウンロード、ここではeclipse-cpp-mars-1-win32.zipをダウンロードしてC:\に解凍。起動しようとするとすぐ終了してしまうので、コマンドラインからeclipsec.exeで起動してみる。メモリーが足りない?eclipse.iniの最後を以下のように書き換えて起動。-Xmx640m123-Dosgi.requiredJavaVersion=1.7-Xms256m-Xmx640m起動できた。5s.656ms)ビルドできた。Configuration]で以下のように設定。いうか自動で作られる。[Run][Run]を実行。World!!!が表示されないので、コマンドラインから起動してみると以下のエラーがでた。-static-libstdc++をつけて解決コンソールを出さないWindowsプログラムを作るため、Makefileプロジェクトを作った。$(TARGET)フラグの指定の仕方が強引だがLDFLAGSが効かないみたいなので今はこれで。実行これでwin32アプリの準備はできたので、JNIを利用してjavaのランチャーを作る。jni.hがJDKに入ってるので仕方なくJDK7をインストール。mymain()を作成。`_imp__JNI_CreateJavaVM@12'jvm.libがこの関数をエクスポートしてないみたいなので、dllから直接よぶ。今回はjvm.dllの位置は固定でやる。0;}これでVMは作れたのでパラメータを調節すれば動くだろう。CDTはいろいろくせがあって慣れないと使いづらい。admineclipseの起動はeclipse.exeで行うがコマンドラインのeclipsec.exeもあるので、コマンドラインからこれで起動するとエラー内容が表示される。-Xmx640m123-vmargs-Xms256m-Xmx640m-XmsはJavaのメモリの初期値、-Xmsは最大値これで起動はしたがメモリが足りなくなるのかもしれない。*あるいは-Xmsは削除してもいいかもしれない。ポインタはマーシャリングされた構造体を参照できません。adminC++/CLIでこのエラーが出たらプロジェクトの設定の「共通言語ランタイムサポート」を/clrにすれば出なくなる。Install値が1ならインストールされているレジストリ。見つからなかったため、このアプリケーションを開始できませんでした。86,64はアプリに合わせる。右辺値参照がわかりづらいのでメモ&テストまず、生のデータNamaを定義しよう。namadata[100];};次にこれを扱うクラスNamaHandlerを定義しよう。pN_;}};問題ない。コンストラクタでNAMAを初期化し、デストラクタで解放。このクラスには問題がある。コピーコンストラクタを定義してないので、コピーするとポインタがコピーされ、デストラクタで2重deleteになってしまう。よってコピーコンストラクタを定義しよう。sizeof(*pN_));}アサインメントのオペレーターも定義しよう。*this;}コピーコンストラクタはインスタンスを作成するときに呼ばれる(=を使っても)。operator=は=したとき呼ばれる。0;}ここでNamaHanderを返す関数getNama()を定義しよう。0;}このコードには論理的に問題はないが、やたらとコピーが呼ばれる。上の42行目と44行目でやたらと呼ばれる、しかも作ったオブジェクトをすぐ捨てていてもったいない。そこで右辺値参照を定義してみる。*this;}&を&&に置き換えただけだが、実行してみるとここに来ることがわかる。いう条件でくるのか?参照があとは死ぬだけであとはデストラクタが動くだけのオブジェクトの参照のときに呼ばれる。これを生かして実装を変えてみよう。*this;}&&で受け取ったオブジェクトのコピーをせずにポインタだけコピーしている。nameの方はNULLをセットしてデストラクタが呼ばれても大丈夫なようにしている。思ったが上のコードにはひとつ問題が。ある?thisと&&が同じ場合のときを考えていなかったがそんなことはあるだろうか?ここではないとしてスルーstd::move()上記の例は全部コンパイラが勝手に呼んでくれたものだった。コンパイラは死ぬだけになったオブジェクトを判別できれば呼んでくれるが、すべてのものを判別できるとは限らない。n2;}4行目のn1はもう使ってないので&&を呼んでくれてもいいのに呼んでくれない。0;}std::moveはよっぽど特殊じゃないと使わない気がするし間違うとやばい。