.NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
とりあえず併用するコードを書いて書いた言語に合わせて拡張子をつけるところまでやりましたが、
そこからどのような風にプロジェクトを組めばいいのか分かりません。教えてください。
また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?
環境はVS2005の学割版です。よろしくお願いします。
.NETにおける多言語の併用
Re:.NETにおける多言語の併用
>.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仕様のコールで呼べます(その場合はレジストリ登録が必要です)。
これ(併用)の意味が分からないのですが。。。
単に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における多言語の併用
> .NETにおいて例えばC#とC++/CLIの併用をするといった場合どのような手順を踏めばいいのでしょうか?
異なる言語を使う場合には静的リンクができません(CとC++なら静的リンク可能です)。
したがって、一方をDLLにして、他方から参照することになります。
> また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?
C++/CLIからであれば、アンマネージドなコードと静的リンクすることができます。
ですから、普通にヘッダをインクルードして使用することができます。
異なる言語を使う場合には静的リンクができません(CとC++なら静的リンク可能です)。
したがって、一方をDLLにして、他方から参照することになります。
> また、アンマネージドなコードと併用する場合どのようにすればいいのでしょうか?
C++/CLIからであれば、アンマネージドなコードと静的リンクすることができます。
ですから、普通にヘッダをインクルードして使用することができます。
Re:.NETにおける多言語の併用
>単にC#とC++/CLIをソリューションプロジェクトとして管理したいという話ですか?
はい、つまり、C#で書いたコードとC++/CLIで書いたコードを同一のEXEにしたいのですが、それは無理でしょうか?ということです。
全体的に1つのプロジェクトとしてする事はできないでしょうか?
はい、つまり、C#で書いたコードとC++/CLIで書いたコードを同一のEXEにしたいのですが、それは無理でしょうか?ということです。
全体的に1つのプロジェクトとしてする事はできないでしょうか?
Re:.NETにおける多言語の併用
ということは、二つのプロジェクトをソリューションでまとめて、プロジェクトごとに呼び出し側はEXEを、呼び出されるほうはDLLを作るように設定すればいいということですね。
教えていただきありがとうございました。
教えていただきありがとうございました。