タグ

C++に関するtakamR1のブックマーク (83)

  • ダイナミック リンク ライブラリ(DLL)の基礎知識

    1. DLLの作り方(VC++編) 関数subをDLLにしたい場合,次のようにソースプログラムを作成する. 外部プログラムから呼び出したい関数(この場合sub)の前に __declspec(dllexport)という おまじないをつけておく(このおまじないがついていない関数はDLL外部からは見えないので安心). #include <stdio.h> __declspec(dllexport) int sub(int arg) { printf("sub %d\n", arg); return arg + 1; } sub.c 通常の静的にリンクして利用する関数を作る場合(*.objまたは静的リンク ライブラリ*.libを作ってリンクする場合)との違いは, DLLの外に公開したい関数の定義の前に__declspec(dllexport)というキーワードがつけることだけになっている. [さらに

    takamR1
    takamR1 2009/03/17
    暗黙的リンクと明示的リンク
  • Visual C++でのBoostライブラリのビルド方法

    Dashboardから簡単にイジェクト。 イジェクトキーがなくとも。 CD/DVDドライブを複数接続していても。 詳しくはこちら。 Visual C++でのBoostライブラリのビルド方法 最終更新日:2008年3月30日 概要 Boostライブラリはオープンソースで提供されるC++のライブラリで、便利な機能を提供してくれるものです。このドキュメントではBoostライブラリをビルドする方法を紹介します。なお、Boostライブラリはビルドしなくとも使える機能も多々あり、FileSystemなどのいくつかのライブラリを使う場合にビルドが必要となります。 バイナリ形式のライブラリは無いのか? Boostライブラリは無理にソースからビルドしなくともバイナリ形式でも入手することが出来ます。しかし、現時点ではVisual Studio 2008 (Visual C++ 9.0)に対応したバージョンはS

    takamR1
    takamR1 2009/02/20
  • ゲーム職人.com - FoxUi

    takamR1
    takamR1 2009/02/20
  • Vista到来。既存C/C++資産の.NET化を始めよう! ― @IT

    最上位エディションのUltimateを初め、Business、Home Premium、Home Basicの各パッケージが置かれている。 さてさて、2007年はVistaの年となりました。(記事日付では)昨日1月30日のWindows Vista発売早々、さっそくインストールした方も少なくないことでしょう。すでに家電量販店には製品パッケージが大々的に陳列されています。最上位エディションであるVista Ultimateともなると5万円超、なかなか強気な価格設定です。 筆者は無線LANでインターネットにつないでいるのですが、まだドライバがVistaに対応してくれていないので格稼働はしばらくお預け。対応アプリケーション&ドライバが増えてくればVistaの普及に拍車がかかるでしょうね。 ■Vista時代にC/C++はもはやお払い箱なのか? 16bit Windowsの時代からWindows

    takamR1
    takamR1 2009/02/18
  • C++/CLIによるCライブラリの.NET化

    typedef int (*sqlite3_callback16)(void*,int,__wchar_t**, __wchar_t**); int sqlite3_exec16( sqlite3 *db, /* The database on which the SQL executes */ const __wchar_t *zSql, /* The SQL to be executed */ sqlite3_callback16 xCallback, /* Invoke this callback routine */ void *pArg, /* First argument to xCallback() */ __wchar_t **pzErrMsg /* Write error messages here */ ){ int rc = SQLITE_OK; const __wc

    C++/CLIによるCライブラリの.NET化
    takamR1
    takamR1 2009/02/18
    C++ライブラリの流用
  • Cry's Blog

    以下のコードは ill-formed である.その理由を述べなさい. void f() {} template<typename T, typename... Types> auto f(T &&, Types &&... args) -> decltype(f(args...)) { return f(args...); } int main() { f(0, 1); } $ mkdir test $ tar cavf test.tar.gz test test/ $ file test.tar.gz test.tar.gz: gzip compressed data, from Unix, last modified: Thu Mar 29 10:46:53 2012 $ rmdir test/ $ tar xavf test.tar.gz test/ $ mkdir test $ t

    Cry's Blog
    takamR1
    takamR1 2009/01/19
  • Boost.Serializationで遊んでみた - Faith and Brave - C++で遊ぼう

    これ使うとXMLの扱いがとっても簡単になりますね 基的にはシリアライズしたいクラスのメンバにserialize関数を追加するだけです ・テキスト出力 #include <fstream> #include <string> #include <boost/serialization/serialization.hpp> #include <boost/serialization/nvp.hpp> #include <boost/serialization/string.hpp> #include <boost/archive/text_oarchive.hpp> class Person { public: int age; std::string name; private: friend class boost::serialization::access; template <cl

    Boost.Serializationで遊んでみた - Faith and Brave - C++で遊ぼう
    takamR1
    takamR1 2009/01/19
  • boost::serializationの使い方

    boost::serializationを使う はじめに コンパイル 簡単な使い方 クラスのバージョン付け 読み込みと書き込みで別の動作を行う 「非侵入型」のシリアル化関数 基底クラスをシリアル化する 配列をシリアライズする constメンバはどうするか ポインタからのシリアライズ:その1 ポインタからのシリアライズ:その2 基底クラスへのポインタから復元する 実装レベル オブジェクトの追跡 抽象クラスでのエラー NVP ロケールの設定 はじめに boost C++ Libraries(以下単にboost)という非常に便利なライブラリがあります。 次期C++標準にこのライブラリのうちのいくつかが採用されるらしいという話もあり、 C++開発者にとっては無視して通れないライブラリです。 そんなboostの中に、serializationというライブラリがあります。 一言で言ってしまえば、「クラ

    takamR1
    takamR1 2009/01/16
  • 『ログ出力クラスを作るには?』

    C++ フリーでぷろぐらみんぐ 逆引きリファレンス。 C++のやりたい事から引ける逆引きメモを書いています。 何かコメントなどいただけると嬉しいです! 以前の記事で、ログ出力は難しい問題ということを書きました。 ・ログ出力を実装する上での注意点とは? そうはいっても、ある程度動くものを作ってみないことには感じもつかめません。 ここでは、WindowsやPOSIXの環境で使用できそうなログクラスを作ってみようと思います。 さて、boostにファイルロッククラスはありますが、ログ出力への使用は難しそうです。 そこでここではディレクトリ作成によるファイルロックを使用してサンプルを作ってみようと思います。 ファイルはこちら 。 すぐに遊べるようにDev-C++とVC++2008のプロジェクトも入れてみました。 以下のファイルをダブルクリックしてみてください。 ビルド後にデバッグを起動するか、作成し

    takamR1
    takamR1 2008/12/26
  • [00027335](SET)] スタティックライブラリからスタティックライブラリを使用する

    takamR1
    takamR1 2008/12/26
  • CodeProject: COM in plain C, part 8. Free source code and programming help

    takamR1
    takamR1 2008/12/23
  • ActiveScriptHostの最小(?)の雛形 - seraphyの日記

    #include <stdio.h> #include <tchar.h> #include <locale.h> #include <atlbase.h> #include <atlcom.h> #include <activscp.h> class __declspec(uuid("{B54F3741-5B07-11cf-A4B0-00AA004A55E8}")) VBScript; //class __declspec(uuid("{F414C260-6AC0-11CF-B6D1-00AA00BBBB58}")) JScript; class __declspec(uuid("{147F5B60-1F9B-4035-A22C-1A87493CF6BD}")) MyScriptSite : public CComObjectRoot , public CComCoClass<MyScr

    ActiveScriptHostの最小(?)の雛形 - seraphyの日記
    takamR1
    takamR1 2008/12/23
  • BasicExcel - A Class to Read and Write to Microsoft Excel

    Download source files - 77 Kb Download demo project - 80 Kb Introduction More than 4 years ago, in December 2001, I posted CSpreadSheet, which is able to read and write to Microsoft Excel. That class was relatively popular. However it suffers from a few deficiencies like the necessity of a header row, inability to read cells as numbers, etc. All these are a result of the ODBC driver which it relie

    takamR1
    takamR1 2008/12/16
  • エンディアン変換/判別関数・マクロ集 (C/C++,(ほぼ?) 処理系・OS 非依存)

    気が向いたら書く. 特定のメモリアドレス範囲にマップされたデバイスのエンディアン判定. デバイス (アドレス) が異なればエンディアンも異なる可能性がある. (実際にそういうデバイスを使ったことがあるわけではなく, 可能性として考えてみているだけ.) レジスタ演算だけでエンディアン変換ができ,メモリアクセス不要. (バイト単位の) シフトが高速に行える CPU,あるいは (シフトに比べて) メモリアクセスが遅い CPU 向き. (バイト単位の) シフトが高速に行えない CPU では, 任意エンディアン変換はエンディアン反転以上に効率が悪い. データ長が長いと,それだけレジスタを多く使用する. ⇒ 同時進行中の,レジスタを使う別の処理の速度を低下させる場合がある. レジスタ長より長いデータは効率良く扱えない. 符号付整数型にトラップ表現が存在する処理系では, エンディアン変換の途中結果がトラ

  • Let's Boost

    Boost C++ Libraries の紹介サイトです。 :: by Google はじめに ご挨拶 Boost のインストール方法 参考リンク集 ニュース ◆ Version 1.42.0 と 1.41.0 対応 (2010/03/14) 新規ライブラリに関する Let's Boost のページ…: property_tree (汎用木構造型コンフィグ管理) / uuid (ユニークID生成器) ◆ RSS つけました (2009/08/28) ◆ Version 1.40.0 と 1.39.0 対応 (2009/08/28) 新規ライブラリに関する Let's Boost のページ…: Signals2 (Signal/Slotライブラリ改良版) ◆ Version 1.38.0 と 1.37.0 対応 (2009/02/22) 新規ライブラリに関する Let's Boost のペー

    takamR1
    takamR1 2008/10/09
  • http://ml.tietew.jp/cppll/cppll/article/8275

    takamR1
    takamR1 2008/10/08
  • http://m--takahashi.com/bbs/pastlog/08000/07984.html

    takamR1
    takamR1 2008/10/07
  • C++ フリーでぷろぐらみんぐ

    はじめに サンプルについて エラーについて VC++でのコンパイルについて 【準備編】 ・どのプログラム言語を学んだらいいの? ・C++Windowsでフリーで開発するには? ・DevC++をインストールするには? ・wxDevC++をインストールするには? ・どんなを参考にしたらいいの? ・Dev-C++やwxDev-C++WindowsのDLLを使用するには? ・VC++でDLLから.libファイルを作成するには? 【C++編】 文字処理 ・区切り文字を分割するには? ・複数の文字のうち、いずれかの文字が最初に現れる位置を検索するには? ・HTMLのタグを分解するには? ・HTMLのタグを分解するには? (セパレータの拡張) ・HTMLタグの閉じ忘れをチェックするには? ・正規表現を使用するには? ・やってはいけない、switchで文字列を使用する方法とは? ・マルチバイト文字を

    takamR1
    takamR1 2008/10/06
  • C++ - 自分用メモとか

    Site admin: fjedi PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.2.0-8+etch13. HTML convert time: 0.016 sec.

    takamR1
    takamR1 2008/09/19
  • C++クラス設計に関するノート

    C++が他のオブジェクト指向言語と比べて難しいのは、やはりメモリ管理をプログラマが自分でしなければいけない点だと思います。よくよく注意しないと、削除し忘れたり、同じオブジェクトを2度削除してしまうというエラーが発生します。このノートでは、オブジェクトを「値オブジェクト」と「参照オブジェクト」というカテゴリに分け、詳細設計の段階で注意すべき点を整理しておきたいと思います。 0. はじめに 私自身今までいくつかのプログラミング言語を使ってきましたが、C++ が他のオブジェクト指向言語と比べて難しいのは、やはりメモリ管理をプログラマが自分でしなければいけない点だと思います。例えば、 Person* person = new Person(); と生成したオブジェクトは、使い終わったら次のように削除しなければなりません。 delete person; 生成してすぐ削除するなら簡単なのですが、実際に

    C++クラス設計に関するノート
    takamR1
    takamR1 2008/09/19