0

DLL (/clr ランタイム、ManagedC++ を使用) で作成されたクラスと、そのクラスで定義されたコンストラクターがあります。次のようにコードします。

//Following is defined in something.h//

namespace ABC
{
public ref Class XYZ
{
public: int a;
public: XYZ();
};

//In something.cpp, I've the below code to define the constructor of the class created//

#include something.h

namespace ABC
{
 XYZ::XYZ()
  {
     a = 100;
  }
}

上記のプロジェクトはDLLに組み込まれています

別のプロジェクトでは、クラス XYZ を次のように使用しようとしています。

#include something.h
using namespace ABC;

//inside main, I've following code

{
ABC::XYZ^ prq = gcnew ABC:XYZ();
prq->a=200;

......
...
}

これで、次のエラーが表示されます-

unresolved token (06000001) ABC.XYZ::.ctor

ここで何が問題なのか教えてください。

4

1 に答える 1

1

問題は、リンカーがコンストラクターの定義を見つけられないことです。これは別の DLL にあります。管理されたプロジェクトでは、アセンブリへの参照を追加することでこれを解決します。プロジェクト、プロパティ、共通プロパティ、フレームワーク、および参照を右クリックします。[新しい参照の追加] ボタンをクリックします。プロジェクトが同じソリューションにある場合は、[プロジェクト] タブを使用します。それ以外の場合は、[参照] タブ。

また、.h ファイルが不要になったことにも注意してください。宣言は、アセンブリのメタデータからインポートされます。

于 2012-10-08T12:21:36.127 に答える