タグ

programmingとVC++に関するyzxのブックマーク (5)

  • Visual C++でLuaを使ってみる - monozuku

    題 Luaとは、柔軟で高速なC言語に組み込めるスクリプト言語です。詳しい説明はここらへんに書いてあるので抜きにして、今回はVisual C++を使ってLuaを単体で使ってみようということで。 Luaをダウンロード http://www.lua.org/のdownloadメニューから最新版をダウンロードできます。 http://code.google.com/p/luaforwindows/なんかをダウンロードするとエディタと実行環境もついてきますが、今回はVisual C++から使うということなので、Windows用のバイナリからlua5_1_4_Win32_vc9_lib.zipをダウンロードしました。 適当なフォルダ(C:\Lua\)をつくり、lua5.1.libをC:\Lua\libフォルダに、includeフォルダの中身をC:\Lua\includeフォルダに入れました。 Vis

    Visual C++でLuaを使ってみる - monozuku
  • __security_check_cookie – すなのかたまり

    最近のコンパイラは、かなり頭の使う処理を行ってくれています。VIsual Studio でも、普通に書いたプログラムなのに、いろいろなセキュリティー関連のチェック機構を埋め込んでいくれています。動作させる環境を守ってくれるのでとても有難いのですが、何も知らずにプログラムを使っていると、思わぬところで悩まされることがあります。 Visual Studio で /GS オプションを付けて C/C++ プログラムをコンパイルすると、関数呼び出しの際にバッファー オーバー ラン (BOR) を自動的に検出してくれるコードが埋め込まれます。異なるバージョンのコンパイラで作ったライブラリをリンクさせようとすると、たまに 「__security_check_cookie なんちゃらのシンボルがない」 というリンク エラーが出ることがあります。自分で書いたプログラムを見てもそんな関数は使ってないわけですが

    __security_check_cookie – すなのかたまり
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

  • ダイアログボックスの作成 - インコのWindowsSDK

    メインウインドウを表示させないダイアログボックスだけのアプリケーションを作成します。 WinMain関数 - インコのWindowsSDK を修正して、ウインドウを表示するようにします。 リソースファイルとヘッダファイルをプロジェクトに追加 リソースファイルtest.rcと、resource.hをプロジェクトに追加して下さい。 Visual C++ 2010 リソースファイル追加 を参照して下さい。 C言語 ソースファイル 1.WinMain()で、ダイアログボックスを作成する関数DialogBox()を実行 INT_PTR DialogBox( HINSTANCE hInstance, // モジュールのハンドル LPCTSTR lpTemplate, // ダイアログボックステンプレート HWND hWndParent, // 親ウィンドウのハンドル DLGPROC lpDialogF

  • Visual C++ の小技

    自分の書いたコードがどんな風にアセンブラに落ちているのか、確かめたくなることはありませんか? え、ない? ほんと? いや別にいいんですけど。 というわけで、コンパイル結果が気になるような人はたいていもう知っているはずなんですが、念のため。 一番簡単なのは、コンパイラにリスティングファイルを作らせることでしょう。 プロジェクトオプション、C/C++、リスティングファイルから指定できます。 出力結果は、中間オブジェクト出力先ディレクトリに a.cod とかで出てきます。 後は個人のお楽しみ。 普通にやると eip はインラインアセンブラでは取れませんが、次の関数を呼び出すことで取得できます。 LPVOID __declspec(naked) GetEip() { __asm mov eax, [esp]; __asm ret; } ↓の方で解説していますが、__declspec(naked)

  • 1