昨年、C#でWindowsプログラミングをはじめ、いろいろやっているうちになぜかC++とかまで手を出すはめに。UWPじゃ制限がありできない、C#だと参考になるものがない、ということで。SDKとかサンプルプログラムを見ながら見よう見まねで。基本がわからないので、ちょっと手直ししてみるだけでも時間がかかる。その例のひとつ。
セキュリティ的にそれは使うなとかエラーが出る。
sprintf( dumpBuffer+index, “%02x”, *data );
は
sprintf_s(dumpBuffer + index, 100, “%02x”, *data);
みたいな感じに。
strcat(dumpBuffer, “:”);
は
strcat_s( dumpBuffer, _countof(dumpBuffer), “:” );
っていう感じだそうだ。
参考にしたのはここ。
ぷろぐらむめも : fopen_sとかsscanf_sとかの”_s”関数書き換え例まとめ
(追記)
scanfを使う。セキュリティ的に問題があるという。scanf_sを使えだそうだ。パラメーターには変更なし。そのままでいけた。
DLLを作成するプロジェクトを含むソリューションをいじる。デバッグしようとすると、「xxx.dllを開始できません。」「xxx.dllは有効なWin32アプリケーションではありません。」と言われる。
ビルドして出力したEXEファイルは正常に意図したとおりに動作するのだけど。むむう。で、調べた。
これはスタートアッププロジェクトの設定で解決。DLLのプロジェクトのほうを起動しようとしていた模様。ソリューションエクスプローラーで選んだほうが起動するものだとばかり思っていた。
設定方法は「プロジェクト」メニューの「スタートアッププロジェクトに設定」でいける。ソリューションのプロパティにもあった。
参考にしたのはこのへん。
Windows 8.1上でVisual Studio 2015を使用してデバッグビルドしても、デバッグ開始できません。
方法 : スタートアップ プロジェクトを設定する
今後もこんな感じでメモしていこうかと思う。
コメント