• 締切済み

C/C++でComponent Objectを開発したい

こんにちは。 WSH JScript などの処理系から同期関係の Win32 API (*) を呼びたくて Component Object (COM オブジェクト) を C/C++ で開発したいと思っています。そこでプログラムの骨格がどのようになるのか学ぶよいポインタ情報がありましたら教えて頂ければ幸いです。 開発環境は WinXP, Borland C++ 5.5.1 を当方使用しています。特に BCC でなければという理由はありません。 (注釈) * Mutex/Event オブジェクトをアクセスする手続きが主です

みんなの回答

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス ・次のリンクをどうぞ。  http://www5.plala.or.jp/atata/→『COM総合研究所』  http://www.asahi-net.or.jp/~kv8s-yjm/another/yja001.htm→『C言語でCOMクライアント』 ・次の書籍はどうでしょうか。  http://www.amazon.co.jp/dp/4891001496/→『インサイドCOM+ 基本編』

iriyak
質問者

お礼

アドバイスありがとうございます。いずれのリンクも必要最小限の技術要素で COM の読解を後押ししてくれる良サイトでとても参考になります。 インサイドCOM+基本編は 734 頁もあるんですね。まずは本屋さんに足を運んでトライしてみます。

関連するQ&A

  • C#で参照したCOMコンポーネントが動作しない

    VS.NETのVisualC#でアプリケーションの開発を行っているのですが、あるCOMコンポーネント「A」を参照して、その中のメソッドを動作させようとするとFileNotFoundExceptionが発生し、「ファイル名またはアセンブリ名A、またはその依存関係の1つが見つかりませんでした。」というメッセージが出力されてしまいます。「A」は別のCOMコンポーネント「B」を参照していますが、「B」は管理ツールのコンポーネントサービスに登録済みです。なおtlbimpを使用して厳密名はつけてあります。 C#に詳しいかた、いらっしゃいましたらよろしくお願いします。

  • コンパイラC++のDL方法

    こんにちは。 大学の課題で、C言語を使ったプログラムの課題が出されており、 それを書きあげるために、C++コンパイラのDLが必要です。 なので、 http://www.embarcadero.com/jp/products/cbuilder/free-compiler から、C++コンパイラをDLしました。 そこで手順に従って、 freecommandlinetools2 freeturbodebugger をインストールしたまでは良かったのですが、 次の手順が以下のようになっています。 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib" この中で、 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 の意味がわからないです。新しいファイルを作って保存すればよろしいのですか? どなたか、ご回答をお願いします。

  • Borland CからBuilderへのプロジェクト変換について

    Borland C++ 5.01で作成されたアプリケーションの開発環境をBorland C++Builder 6の開発環境に移し変えることになったのですがBCB6で新しくプロジェクトを作り、ソースファイルを1つずつ移行させていったのですがコンパイルエラーが山ほどでてきます。 C言語自体、あまり詳しくないのでうまく説明できませんがOWL?というコンポーネントが使われている為かと。。。 1つずつ潰していけばいいのですが、もっと簡単な方法がないものかと試行錯誤しております。 何かプロジェクト変換するツールやこのようにすれば?というような意見、情報などないでしょうか?

  • Borlandの無償配布のCコンパイラの初期設定

    ダウンロードしてきたやつを実行させて無事にディレクトリはできたのですが、以下の手順2のところのパスに追加しろ、というのがどういうことなのか分かりません。何をやればいいのか教えて下さい。 今までLinuxの既存のgccという温室で作業していたので、いざWindows上でCを動かしたいときに何をやればいいのかわかりません。助けてください ============================================================= 1. freecommandlinetools.exe を実行します。無料の C++Builder 5 コマンドラインツール開発システムをインストールしたいドライブと フォルダを選択します。 2. インストール先の bin ディレクトリで次の手順を実行します。 a. 既存のパスに "c:\Borland\Bcc55\bin" を追加します。 b. bcc32.cfg ファイルを作成します。このファイルは,Include および Lib パスのコンパイラオプション(コンパイラの -I および -L スイッチ)を設定するものです。ファイルには次の 行を含めてください。 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" c. ilink32.cfg ファイルを作成します。このファイルは,Lib パスのリンカオプションを設定するものです。ファイルには 次の行を含めてください。 -L"c:\Borland\Bcc55\lib"

  • なぜ「C言語」にOOPが実装されなかったの?

    1972年に開発された「C言語」(C++ではない)には「オブジェクト指向」というのがないのですが、なぜ「C言語」に「オブジェクト指向」というのが実装されなかったのですか? 「オブジェクト指向プログラミング」は1960年代後半に登場していたのですが、後発の「C言語」には「ポインタ」はあっても「オブジェクト指向」というのがありません。なぜ「オブジェクト指向」は実装されなかったのでしょうか? 当時コンピュータの性能が低かったため実装が難しかったことと、まだ当時オブジェクト指向自体が無名だった為、「C言語」の開発者自体も知らなかったということもあるのでしょうか?

  • 【質問】アンマネージコードとマネージコードについて

    質問1. アンマネージコードはWin32 APIを使用しますか? Windows API=Win32 APIのこと? 現在は、Win32 APIではなく、COM(Component Object Model)コンポーネントをアンマネージコードに使いますか? 質問2. マネージコードには.NET Frameworkを使用します? マネージコードであるWinFXは死んだのですか?.NET Frameworkの次期ですか? 質問3. .NET Frameworkだけでは対応できないってこと? ネットにあるソースは.NET FrameworkとWin32 APIが混合しているソースがいっぱいあります。 .NET Frameworkだけでは対応できないってことですか?

  • C#でオブジェクトの配列を使う

    開発環境はMicrofoft visual stdio 2005 で開発言語はC#を使い、Windousアプリケーションでプログラミングしているのですが オブジェクトを配列でせんげんし、オブジェクトのメンバを使うとエラーが出てしまいます。ソースコードで説明すると using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 {   public partial class Form1 : Form   {     public class car     {       int a;       public void set(int i)       {         a = i;       }     }     public Form1()     {       InitializeComponent();     }     private void label1_Click(object sender, EventArgs e)     {       car[] bike = new car[1];       bike[0].set(1);//ここでひっかかる     }   } } これをじっこうするとデバックは通るのですが、label1_Clickイベントが発生すると、「NULLの場所を参照しています」という意味のエラーが出てしまいます。 C#はほとんど初心者なので、初歩的なミスだとおもうんですが、 よろしければ御回答をお願いします。

  • objectタグでHTMLを表示する方法について

    現在,個人的な興味からウェブページの中に複数のページを表示させる方法について調べています. 今のところ,framesetとiframe,そしてobjectタグを使った方法があることがわかりました. しかし,objectタグを使った方法でわからない点があります. http://phpspot.org/blog/archives/2006/11/iframehtmlhtml.html このページを見て頂きたいのですが, objectタグでHTMLファイルを読み込む時に次のようにclassidを指定しています. classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13" 私の認識が正しければ,この文字列はCOMコンポーネントを識別するためのキーだったように思います. とすると,このidは,一体何を呼び出すためのキーなんでしょうか.

  • PGPLOTでの文字描画

    VB6やVS.Netを使わずWindows上でグラフを書くよう依頼があり、 PGPLOTを使い始めました。 グラフ描画に関しては何の問題もなく動作しているのですが、 なぜか文字が描画されません。 解決の糸口が全く掴めないのでご教示願います。 ■ソース #include "cpgplot.h" int main(void){ cpgopen("/GW"); cpgpap(5.0, 0.75); cpgenv(0, 50, 0, 50, 0, 0); cpgscf(1); //文字フォント cpgsch(2.0); //文字の大きさ cpgtext(10, 10, "TEST"); return; } ■開発環境 (1)OS Windows XP SP3 (2)MinGW Ver. 5.1.6 (3)コンパイラ Borland C++ Compiler 5.5 (4)GrWin グラフィックス・ライブラリ lGrWn0999b.exe (5)開発時の使用ソフト BCC Developer プロジェクト設定のリンクは以下を追加しています C:\borland\bcc55\Lib\cpgplot.lib C:\borland\bcc55\Lib\pgplot.lib C:\borland\bcc55\Lib\f2c.lib C:\borland\bcc55\Lib\GrWin.lib

  • C言語のvoid型ポインタ変数について。

    C言語のvoid型ポインタ変数について。 C言語のvoid型ポインタ変数について質問があります。 組み込み系の開発を行っているのですが、現在使用しているシステムで、 提供されている "API" を介してアプリケーション部のソフト作成を行っています。 この "API" ですが、引数の多くはvoid型ポインタとなっています。 ある人がこの引数がvoid型となっているのを見て、 『なんでvoid型なんや??、C言語でアセンブラと違うんやから、void型なんかにしない方が良い』 とおっしゃいました。 この意味がよくわからなかったのですが、なぜ void型はよろしくないんでしょうか? -- 僕が思うに、APIなんやから引数を void型ポインタ にすることでどんな型にも対応できる 汎用的であると感じ、逆にこの方が良いのではと感じたのですが。。 -API例---- int _exApiKannsuu( char in_data, void* out_data ) "in_data" をもとに "out_data" を取得する。 どーやらこの "out_data" が void型 であるのががよくないらしい・・

専門家に質問してみよう