.NETにおける多言語の併用

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
tk-xleader

.NETにおける多言語の併用

#1

投稿記事 by tk-xleader » 18年前

.NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
とりあえず併用するコードを書いて書いた言語に合わせて拡張子をつけるところまでやりましたが、
そこからどのような風にプロジェクトを組めばいいのか分かりません。教えてください。

また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?

環境はVS2005の学割版です。よろしくお願いします。

べり工

Re:.NETにおける多言語の併用

#2

投稿記事 by べり工 » 18年前

>.NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
これ(併用)の意味が分からないのですが。。。
単にC#で作ったDLLをC++/CLIからコールしたい?という意味なら
単純にDLLを参照設定するだけで使用できます。
またその逆(C++/CLIで作成したDLLをC#でコールする)でも同様です。

>とりあえず併用するコードを書いて書いた言語に合わせて拡張子をつけるところまでやりましたが
これまた意味が分かりません。
書いた言語に合わせて拡張子を付ける?
C++であれば*.hまたは*.cppですよね?C#であれば*.csですよね?

>そこからどのような風にプロジェクトを組めばいいのか分かりません。教えてください。
何がしたいのか分かりません。
単にC#とC++/CLIをソリューションプロジェクトとして管理したいという話ですか?
であればソリューションプロジェクトに追加したいプロジェクトを追加すれば
C#だろうがVB.NETだろうがC++/CLIだろうが管理できます。

>また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?
併用の意味が分かりません。C++/CLIのプロジェクトにアンマネージプロジェクトを
ソリューションプロジェクトとして追加するという意味ですか?
または、アンマネージDLLをマネージアプリケーションに取り込むという意味ですか?
そうであればC#だと[DllImport]命令、C++/CLIであれば
Win APIのLoadLibraryや#importインデクサ、取り込むアンマネージDLLがCOM仕様であれば
CoInitInstanceやATL仕様のコールで呼べます(その場合はレジストリ登録が必要です)。

たかぎ

Re:.NETにおける多言語の併用

#3

投稿記事 by たかぎ » 18年前

> .NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?

異なる言語を使う場合には静的リンクができません(CとC++なら静的リンク可能です)。
したがって、一方をDLLにして、他方から参照することになります。

> また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?

C++/CLIからであれば、アンマネージドなコードと静的リンクすることができます。
ですから、普通にヘッダをインクルードして使用することができます。

tk-xleader

Re:.NETにおける多言語の併用

#4

投稿記事 by tk-xleader » 18年前

>単にC#とC++/CLIをソリューションプロジェクトとして管理したいという話ですか?

はい、つまり、C#で書いたコードとC++/CLIで書いたコードを同一のEXEにしたいのですが、それは無理でしょうか?ということです。

全体的に1つのプロジェクトとしてする事はできないでしょうか?

GPGA

Re:.NETにおける多言語の併用

#5

投稿記事 by GPGA » 18年前

一つのソリューションで行うことは可能です。
添付したファイルは、C++でDLLを作成し、C#でその中身を呼び出すプログラムのサンプルです。

tk-xleader

Re:.NETにおける多言語の併用

#6

投稿記事 by tk-xleader » 18年前

ということは、二つのプロジェクトをソリューションでまとめて、プロジェクトごとに呼び出し側はEXEを、呼び出されるほうはDLLを作るように設定すればいいということですね。

教えていただきありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る