• 締切済み

C#とCでの定数共用に関して

現在、C(native)でDLL,C#でそのDLLを使ったアプリを開発しています。(Microsoft VisualStudio2008) DLL/アプリともC#あるいはC/C++で記述すれば問題ないのですが、諸般の事情でこのような形態になっていますので、これに関しての意見は無用です。 質問ですが、DLL内の関数の呼び出し時に引数として意味をもった定数を使用する - (たとえばWIN32で使うWM_**等のように) - のですが、この定数値をC#のアプリとでうまく使いまわす手段がないかを探しています。 C#にはCのようにヘッダファイルをインクルードすることができないので、もしやるとすれば、Cのヘッダを何らかのスクリプトで自動変換してC#でそれ用のenumを含むクラス定義のあるソースファイルを自動生成するなどは思いつきますが、スマートな方法ではないですよね。 #C/C++は何十年と使っていますが、C#はごく最近始めました。 なにかもっと簡便な方法はあるのでしょうか。 よろしくお願いいたします。

みんなの回答

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

native側をCOMにする。

pochi2tama
質問者

お礼

ご回答、ありがとうございます。 補足に書き忘れたのですが、再編集できないのでこちらに書いておきます。 DLLはネイティブ 自分のアプリ:C# 他人のアプリ:C/C++(ネイティブ) です。 #自分のあぷりをC/C++(ネイティブ)に書き換えれば問題ないのですが。

pochi2tama
質問者

補足

もともと組み込み系をやっていたのでVisualStudio(Microsoft)環境はこれが初めてで、COMに関して余り良く知らないのですが、DLL側にCOMを使うと、識別子を使わないで記述できる仕組み?があるのでしょうか。 #識別子を渡す代わりに関数を呼ぶという方法も考えられますが、冗長ですよね。 後出し情報のようになって申し訳ありませんが、もともとはすべてC#で記述していたものを、外部からの要求で、演算部分のみをDLL化する際にネイティブ化したものです。 外部の人はコンパイル済みDLL(ソース提供は出来ない)を使ってネイティブ環境で使う物です。

関連するQ&A