2

ご挨拶、ご迷惑をおかけして申し訳ありません。質問を表示します。

Visual Studioで実行されているC#アプリケーションにインポートするために、c++で記述されたいくつかの関数をDLLにエクスポートしようとしています。次のコードで報告されているようにエクスポートを行います。

tobeexported.h:

namespace SOMENAMESPACE
{
                class __declspec(dllexport) SOMECLASS
                {
                               public: 
                               SOMETYPE func(param A,char b[tot]);

                };
}

tobeexported.cpp:

#include "stdafx.h"
#include "tobeexported.h"
...


using namespace SOMENAMESPACE;

SOMETYPE SOMECLASS:: func(param A,char b[tot])
                {
                               ...some stuff inside...
                }

dllは正しく作成されており、コードはすでにCLR管理されており(逆アセンブルソフトウェア(リフレクター)で表示)、エクスポートされた関数が含まれています。次に、c#アプリケーションで「参照を追加」するとdllが見つかりますが、開くとオブジェクトブラウザでは、完全に空であり、クラスもオブジェクトもエクスポートされておらず、使用する準備ができていません。

手伝ってくれませんか?感謝をこめて

4

1 に答える 1

3

マネージ C++ を使用して DLL をコンパイルするのはどうですか? 次に、次のようにクラスに ref を追加するだけです。

namespace SOMENAMESPACE
{
                public ref class SOMECLASS
                {
                               public: 
                               SOMETYPE func(param A,char b[tot]);

                };
}

コンパイルが成功し、他のプロジェクトで参照されると、クラスが表示されます。ネイティブ C++ のエクスポートは移植性が低く、コンパイラごとに異なる結果が生成され、C# 内からバインドするのは面倒です...

編集: public アクセス修飾子を ref クラスに追加しました...

于 2010-01-18T11:33:23.260 に答える