C/C++

初学者にもQt Creator

C言語入門書やウェブサイトを用いて学習を始める者にとってもQt Creatorは機能する.プレーンなCプロジェクトあるいはプレーンなC++プロジェクトを選ぶ.「Hello World!」を表示するコードが生成される.これを各自が書き換えると良い.

テキストファイルの特定文字列がある行を残す

BUF が小さいのは,先頭の6文字目あたりに目的の文字列があるから.その行自体も文字数が少ないから,20くらいでいいな. #include <stdio.h> #include <stdlib.h> #include <string.h> #define BUF 128 int main ( int argc, char **argv ) { if ( argc < 4 ) return 0; char *inFilename</string.h></stdlib.h></stdio.h>…

std::vector なデータをビット単位で見る

データ代入のタイミングはコンストラクタのみ. main.cpp #include "bitStreamPointer.h" #include <iostream> using std::cout; using std::endl; int main ( void ) { std::vector<unsigned char> data; for ( unsigned char i = 0; i < 10; i++) { data.push_back( i ); } bitStrea</unsigned></iostream>…

NIST Special Publication 800-38A のテストベクトルを確認した

NIST Special Publication 800-38A の付録 F に記載されているテストベクトルを入力した.testNISTAESCBC256() に記述している. 実行結果 main.cpp // AES-CBC テストベクトル確認 // http://www.ipa.go.jp/security/rfc/RFC3602JA.html#4 #include <iostream> #inclu</iostream>…

テストベクトル#2を確認した

bytePrinter::print() は unsigned char * 配列か std::vector を入力して,16進数文字列を出力する.hexstring2bin::convert() は 16進数文字列(std::string)を入力して,std::vecotr を出力する.暗号化後のデータも,復号化後のデータも文書 The AES-CB…

Brian の AES ライブラリをスタティックリンクして使用する

VC++ 2010 プロジェクトに与える プロパティシートファイル aesBrianvs2010-11-01-11.props を作った. インクルードディレクトリ追加 ライブラリディレクトリ追加 共通必須ライブラリ aes.lib と 選択的必須ライブラリ lib_asm_x86_v2c.lib をリンク マクロ…

Brian Gladman の AES ライブラリをビルドする手順

共通鍵暗号に AES という手法がある.プログラミングにおいて,AES を扱うのには,誰かが既に作っているコードを利用するのが楽だ.楽なはずだ.きっと.実のところ OpenSSL というライブラリ群にも AES が実装されている.しかし,使用法がよく飲み込めなく…

xorshift を使用したランダムな std::vecotr を作る

xorshift のコードはコピペした.以前のエントリにも同内容があるはず.主題は main.cpp の getArray 関数.dst をアドレス受け取りにする事で,やっと完成した.sizeof(unsigned int) がマシンによって異なるところを,気にせず使用できるようにしたかった…

OpenCV 2.2 を Visual C++ 2010 Express で使うための準備から動作確認までの手順とプロジェクトサンプルとプロパティシートサンプル

手順 OpenCV-2.2.0-win.zip をダウンロードする C:\Software\Develop\src に展開する CMake を使う Source: C:/Software/Develop/src/OpenCV-2.2.0 Output: C:/Software/Develop/opencvlibrary/OpenCV-2.2.0 TBB は既に C:\Software\Develop\src\tbb30_20100…

OpenCV SVN 最新版(r4185)は安定していないから,r3110 にしておこうね

デバッグ付き実行をすると,次のメッセージを表示するダイアログボックスが出現し,コマンドプロンプトのウインドウが残る. プロシージャ エントリ ポイント ?deallocate@Mat@cv@@QAEXXZ がダイナミック リンク ライブラリ opencv_core211d.dll から見つか…

OpenCV 2.1 on VC++ 2010 Express で映像を読み込めないわけと対応策の例

読み込めないわけ さて,映像ファイルを読み込めない - BiBoLoG で映像を読み込めないことを挙げた.VC++ 2010 のメジャーバージョン番号は10であるにも関わらす,9のライブラリを読み込もうとするコードが問題だった.ソースを msvcr90 で検索すれば ffopen…

映像ファイルを読み込めない

VC2010に合わせてCMAKEでのビルドは完了できたが、AVI動画読み込みをやってみたところ「MSVCR90D.dllがねぇーよ」というありがたいメッセージが。この手のエラーはよくあるみたいで、対処法を試してみたがダメ。結局VC2008にして何かと成功。 このフナムシ野…

VC++ 2010 のプロパティシート利用例

Visual Studio 2010 に適応した作業をということで,プロパティシートを作り,これを利用する方法を試した.ここに手順を示す.http://d.hatena.ne.jp/Guernsey/20101130/1291121529 から ifdef の部分を抜いたコードでテストした. メニューバー「ツール>…

OpenCV 2.1 のセットアップメモとプロジェクトサンプル

Windows XP でなんとかできた. 参考資料 OpenCV2.1のインストール:Windows(windows:32bit, 64bit, VIsual Studio) | OpenCV.jp OpenCV 2.1 をセットアップする 準備物 Visual C++ 2010 Express OpenCV-2.1.0-win.zip TBB CMake ひょっとしたら Windows SDK…

RSA 署名と検証

私密鍵(private key)で何らかのデータを署名する.この署名を証明書(certification)に含まれている公開鍵(public key)で検証する. 準備するもの Shining Light版 OpenSSL 1.0.0a Visual Studio 2008 Express Edition Windows XP openssl.exe で鍵を作…

sha256c というクラスを作った

コメントを書き込まなきゃな.javadoc 形式なりなんなり. main.cpp #include "sha256c.h" int main ( int argc, char *argv[] ) { sha256c s; s.classtest(); return 0; } sha256.h #pragma once #ifdef _DEBUG #pragma comment(lib, "libeay32MDd.lib") #p…

SHA-256 ハッシュ計算

RAND_bytes() で作ったデータを入力しても,コードの正確性は測れない.次の情報を入手したから,これに沿う結果が得られるかを確認する.RFC を参照するべきだろうが,test vector を記載した文書を見つけることができなかった. SHA-256 Test Vector The W…

ビルドした OpenSSL を使ってみる

VC++ で空のプロジェクトを作成する.試みに使用するだけで,簡単なのがいいなと考え,RAND_write_file() を選んだ.return 0; の行にブレークポイントを設定して様子を見る.ret には 1024 が入った.ランダムなデータがきっかり 1024 バイトある a.txt が…

OpenSSL 1.0.0a を VC++ で使用するためのソースコンパイルとインストールの手順

産業 perl Configure VC-WIN32 --prefix=C:\Software\Develop\OpenSSL\1.0.0a ms\do_nasm nmake -f ms\ntdll.mak nmake -f ms\ntdll.mak test nmake -f ms\ntdll.mak install VC++ に include と lib へのパスを通す #pragma comment(lib, "libeay32.lib") #…

Visual C++ で std::min std::max が使えないときは

heifner: std::min and std::max の情報により解決できた.私はこれを選んだ. int a = 0; int b = 1; int x; x = std::min<int>( a, b );</int>

cv::VideoCapture から取得した複数のフレームを std::vector に保管する

clone() していないでやっていて,詰まった. #include <vector> #include <opencv/cv.h> #include <opencv/highgui.h> #ifdef _DEBUG #pragma comment( lib, "cv200d.lib" ) #pragma comment( lib, "cxcore200d.lib" ) #pragma comment( lib, "highgui200d.lib" ) #else #pragma comment( lib, "cv2</opencv/highgui.h></opencv/cv.h></vector>…

std::stringstream

std::string で連番保存ファイル名を作ろうと思ったら失敗した. int i = 0; std::string fn = i + ".png"; i は利用できず,fn は".png" になる.sstream と include して, std::stringstream ss; ss << i << ".png"; std::string は ss.str() で得る.連…

画素値を画面表示する

OpenCV 2.0 で作った.マウスカーソルを合わせた位置の座標と画素値を画面表示する.テスト画像は カラー画像の画素にアクセス - BiBoLoG で使った画像を拡大した. bgrview.cpp マウスは cvSetMouseCallback() で観測する.opencv.pdf や opencv.jp - OpenC…

映像ファイルを固定フレーム間隔で別ファイル出力するコード

avisplit.exe C:\data\Video\b9e3c8b14423.avi C:\data\Video\test 90と実行すると,0-90.avi,90-180.avi なんていう,90 フレームの映像ファイルが c:\data\video\test に出力される.10000 フレームのとある映像について 90 区切りを試したら,うまくいっ…

GNU LGPL ライブラリ GetPot と VC++ の #pragma warning のメモ

GetPot GetPot Command Line Parser / Configuration Parser - Library GetPot Version 1.0 Powerful Input File and Command Line Parser http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Windows/VisualC/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%8…

yaSSL 1.9.8 ビルドメモ

yaSSL が更新され,4番と5番の手順が不要になった.yaSSL って日本語情報少ないなあ - BiBoLoG でビルドできないなあとぼやいたが,出来るようになった. 環境 Windows XP Pro Visual C++ 2008 Express Edition yaSSL Cyassl and yaSSL are embedded SSL Lib…

ぼくのかんがえた csvread(内容は double に限る)

Visual C++ 2008 Express Edition で確認した.main() の data に CSV ファイルの内容が入る.後に示すコードでは,各列の平均値を画面表示している.行列数はそれぞれ決め打ち.コマンドライン引数で指定できるように拡張したらいいんじゃないの. 変数説明…

Windows で OpenCV 2.0 を利用する方法

Python をよく知らない僕は導入を取りやめます,と追記.一旦入れてはみたが,よく分からないからアンインストールしておいた.「導入手順」を加筆した.費用をかけない一例.OpenMP と Python を抜く.無保証.リンク集もどき. 用意するもの C コンパイラ …

多次元配列を new/delete で動的メモリ確保する方法

イメージがつかめた.後の例は次元ごとに new/delete している. Re: newでの二次元配列 by Gimite 2005年8月24日 21:28 2つ方法があります。 int (*a)[3]= new int[2][3]; //ここで配列を使う delete[] a; または int** a= new int*[2]; for (int i= 0; i<2…

cvSplit 使用例

opencv.jp での cvSplit Split マルチチャンネルの配列を,複数のシングルチャンネルの配列に分割する.または,配列から一つのチャンネルを取り出す. void cvSplit( const CvArr* src, CvArr* dst0, CvArr* dst1, CvArr* dst2, CvArr* dst3 ); #define cvC…