- PR -

C言語からC++のクラス/メソッドを利用する方法

1
投稿者投稿内容
ナチ
会議室デビュー日: 2006/10/25
投稿数: 5
投稿日時: 2006-11-09 10:27
お世話になります。

VC6.0でC言語からC++クラス/メソッドを利用したいと思っています。
技術的には可能かと思われますが、いまいちやり方が理解できません。

どなたかサンプルコードを提供していただけないでしょうか?
よろしくお願いします。

ちなみに最終的には、
C ⇒ C++ ⇒ VB.netのコールという図式で利用しようと思っています。
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-11-09 10:54
C言語からC++のクラスを直接使うことは出来ません。
C++でC言語でも使えるようにラッパー関数を作ることになります。

結局のところ
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34448&forum=7

投稿日時: 2006-10-26 00:20

引用:
関数テーブルから関数ポインタを使って自分自身を渡すように変更します。


のような形になってしまいます。

つまり、結局C言語ならば、C++/CLIを噛ます利点がない気がする。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-11-09 10:59
引用:

ナチさんの書き込み (2006-11-09 10:27) より:
VC6.0でC言語からC++クラス/メソッドを利用したいと思っています。
技術的には可能かと思われますが、いまいちやり方が理解できません。


初期のC++コンパイラはC++のソースコードをC言語のソースコードに変換するトランスレータでした。確かに技術的には可能でしょうけど、現実的では無いと思いますよ。C++でC言語から呼び出せるようにラッパーを作成するのが現実的でしょう。

C ⇒ C++(ラッパー) ⇒ C++ ⇒ VB.net

引用:

C ⇒ C++ ⇒ VB.net


C++ ⇒ VB.netの部分をどうやって実現するのかは考えているのですか?C++から直接VB.NETのコードを呼び出すことは出来ません。C++/CLIでラッパーを作るか、あるいはCOMを用いて呼び出すことになると思うのですけど・・・。
C ⇒ C++の部分もどのようなインターフェースを想定していますか?レガシーDLLでしょうか?いまどきC++のコンパイラばかりで、C言語のコンパイラなんて滅多にありません。C++では認められない理由は何処にあるんでしょう?
Blue
大ベテラン
会議室デビュー日: 2005/09/12
投稿数: 230
お住まい・勤務地: 知っている人は知っている
投稿日時: 2006-11-09 11:05
一応こんな別掲示板でスレッド見つけた。
人力検索はてな - C言語からC++のメソッドを呼び出す方法があるでしょうか。あるならばどのようにすればよいでしょうか。注、C++からCの関数を呼び出す方法ではありません。..
ナチ
会議室デビュー日: 2006/10/25
投稿数: 5
投稿日時: 2006-11-09 11:08
引用:

甕星さんの書き込み (2006-11-09 10:59) より:
引用:

ナチさんの書き込み (2006-11-09 10:27) より:
VC6.0でC言語からC++クラス/メソッドを利用したいと思っています。
技術的には可能かと思われますが、いまいちやり方が理解できません。


初期のC++コンパイラはC++のソースコードをC言語のソースコードに変換するトランスレータでした。確かに技術的には可能でしょうけど、現実的では無いと思いますよ。C++でC言語から呼び出せるようにラッパーを作成するのが現実的でしょう。

C ⇒ C++(ラッパー) ⇒ C++ ⇒ VB.net

引用:

C ⇒ C++ ⇒ VB.net


C++ ⇒ VB.netの部分をどうやって実現するのかは考えているのですか?C++から直接VB.NETのコードを呼び出すことは出来ません。C++/CLIでラッパーを作るか、あるいはCOMを用いて呼び出すことになると思うのですけど・・・。
C ⇒ C++の部分もどのようなインターフェースを想定していますか?レガシーDLLでしょうか?いまどきC++のコンパイラばかりで、C言語のコンパイラなんて滅多にありません。C++では認められない理由は何処にあるんでしょう?



C言語にこだわっている理由は、私共のアプリが過去の遺産を引き継いだもので
全てC言語及びFORTRANで実装されている為です。
その為開発は現状全てC言語で行っています。

ただ他システムとの密連携をする上で、このような連携が必要に迫られています。

1

スキルアップ/キャリアアップ(JOB@IT)