備忘録

備忘録

C++

C++ リンカエラーを非表示にする方法

Ⅰ. はじめに タイトルの通り「C++ リンカエラーを非表示にする方法」です。 型キャスト等で出力されるコンパイラ警告は以下の一行で非表示にできますが、リンカエラーは #pragma では不可能です。 #pragma warning(disable:4312) コンパイラ警告の例 「C4312…

cpprestsdk をビルドしてstatic linkする

Ⅰ. はじめに cpprestsdk の使い方はこちらcpprestsdk はNuGetで dynamic link 版が配布されています。 static link 版は配布されていません。static link する為には2017/10/08時点、自分でビルドするしか方法がありません。 Ⅱ. 必要なもの VisualStudio 201…

C++でHTTP(S)でGET/POSTする(cpprestsdk の使い方)

Ⅰ. はじめに .NET系 であれば WebClient や HttpClient が標準である為、 追加のライブラリ無しでHTTPをモダンかつ簡単に扱うことができます。しかし、C++にはそのような物が標準ではありません。 ライブラリを探した結果、Microsoft社が作成しているC++ RES…

OpenSSLをWindowsでビルドする方法

Ⅰ. はじめに タイトルの通り「OpenSSLをWindowsでビルドする方法」です。 コンパイル済みライブラリだけ欲しい人はこちら Ⅱ. 環境(必要なもの) ・Visual Studio 2017 Community (C++) ・Perl(ActivePerl を利用しました) ・OpenSSL 1.0.2l のソースコー…

WindowsでPOCO C++をビルドして使う

C++

https://pocoproject.org/ Ⅰ. はじめに 「POCO C++」はモダンで強力なC++ライブラリです。 XML JSON Zip DB (SQLite, ODBC, MySQL) Foundation(基本機能ライブラリ Base64変換等) 等の機能があります。 Ⅱ. 1つづつビルドする方法 1. ソースコードをダウンロ…

C++ で全ての例外を try catch 出来るようにする

Ⅰ. はじめに Visual Studioのデフォルト設定ではWindowsが発行する「システム的な例外」を捉えることはできません。 無効なメモリアドレスへのアクセス 0での割り算 等が「システム的な例外」に該当します。また、「『システム的な例外』をプログラム上で扱…

C++で複数プロセスから読み書き可能な共有メモリを作る

Ⅰ. はじめに あるプロセスのメモリ空間には他のプロセスからアクセスする事ができません。 OpenProcess してアクセス権を得てもメモリ上のどのアドレスに何のデータが保存されているか簡単に分かりません。 この問題は複数プロセスで共有して使えるメモリ空…

C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする

C++

Ⅰ. はじめに Ⅱ. 環境 Ⅲ. プログラム Shift-JIS UTF-8 (BOM なし) UTF-8 (BOM あり) UTF-16 リトルエンディアン (BOM なし) UTF-16 リトルエンディアン (BOM あり) UTF-16 ビッグエンディアン (BOM なし) UTF-16 ビッグエンディアン (BOM あり) Ⅲ. 参考 Ⅰ. は…

C++ ファイルを全て読み込む

C++

Ⅰ. はじめに STL を使ってファイルを全て読み込む(全行読み込む)方法です。※追記 C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする - 備忘録 Ⅱ. サンプル test.txt aiueo Source.cpp #include <iostream> #include <fstream> using na</fstream></iostream>…

C#からC++(DLL)の関数を呼び出す

Ⅰ. はじめに C#からC++(DLL)の関数を呼び出す方法です。 いわゆる P/Invoke です。Win32 API の P/Invoke はこのサイトを利用してコピペしたほうが早いです。 http://www.pinvoke.net/ Ⅱ. サンプル dllexport.def EXPORTS GetInt GetIntArray GetString GetS…

C++ 高速にメモリサーチを行う方法

ある特定範囲の最初から最後までをサーチをする場合、 メモリを確保していない場所までサーチするため非常に遅くなります。VirtualQueryExを使うと、 メモリのアクセス状態などによって分岐を行えるため、 非常に高速にメモリサーチを行うことができます。 v…