2012-04-17 14 views
3

コンパイル済みのDLLをC#でインポートすると、C++/CLI関数を表示するにはどうすればよいですか?C++/CLIのグローバル関数アクセシビリティの問題

名前をpublicにするだけでクラスを実行できますが、関数ではそうではなく、構文エラーが発生します。

どうすればいいですか?

ありがとうございました!

+0

C++/CLIはC#とは異なる構文を使用します。 C++で 'public'関数を宣言する方法を知っていますか?ヒント:publicと関数宣言の間にコロンを入れてみてください。 –

+0

さて、C++では、関数をpublicと宣言しています。何もしないだけでどこからでもアクセス可能です。それをグローバル名前空間で宣言します。それが私がLinuxの下でいつもしてきた方法です。ここにはC++/CLIのケースがあります。そして 'public:'はうまくいきません!ありがとう、私はより多くの助けが必要です@CodyGray – Haix64

答えて

8

CLRはグローバル関数をサポートしていません。それらをC++/CLIで書くことはできますが、コンパイラは特別なクラスを生成してそれらにホームを与えます。クラス名は<Module>ですが、C#コードからアクセスできません。

public staticメソッドで公開refクラスを宣言することで、まったく同じ結果が得られます。それらにアクセスするのに問題はありません。 C#の静的クラスと同じアイデアからチェックを差し引いたものです。チェックを追加するには、抽象と密封を宣言します。

public ref class Utils abstract sealed 
{ 
public: 
    void static foo() {} 
}; 
+0

それです!ありがとうございました! – Haix64