あなたは何をしようとしていますか?私はBOOST_GRAPH_APIを参照してください、あなたは何ですか? .NetからネイティブC++コードを直接使用することはできません。これは、C++標準ライブラリとブースト(!)でインポートされたすべての依存関係をclrサポートでコンパイルすることを余儀なくされます。
適切なファクトリメソッドとともにクラスへのインターフェイスを定義する必要があります。
// imyclass.h
__declspec(dllexport)
IMyClass* CreateInstance();
__declspec(dllexport)
class IMyClass {
public:
virtual int CompareTo(IMyClass*) = 0;
virtual ~IMyClass() {}
};
// myclass.h
#include "imyclass.h"
#include <vector>
class MyClass : public IMyClass {
std::vector<int> mIntVector;
public:
virtual int CompareTo(IMyClass*);
// constructors and access functions go here...
};
// myclass.cpp
#include "myclass.h"
#include <memory>
IMyClass* CreateInstance() {
return new MyClass;
}
// implementations of whatever MyClass should do go here...
何も、唯一のインタフェースIMyClass
とその作成者が、DLLによってエクスポートされていることを確認していない:これらは安全にあなたが直接.NETプログラム内参照できるC++/CLIオブジェクトによってエクスポートとラップすることができます。 C++/CLIプロジェクトでは、IMyClass
へのポインタを保持し、imyclass.hのみをインポートするC++/CLI使い捨てラッパーを定義します。 imprtラッパーのみIMyClass
、それは創作者が何か以下のように似てますが、コンパイラによってautmatically生成されたもの瞬間に右、わからないファイナライザセマンティクスを取得するために世話をする必要があります...:
ref class IMyClassWrapper {
IMyClass* mPtrResource;
public:
int CompareTo(IMyClassWrapper^ pOther) {
return this->mPtrResource->CompareTo(pOther->mPtrResource);
}
IMyClassWrapper() {
mPtrResource = ::CreateInstance();
}
~IMyClassWrapper() {
this->!IMyClassWrapper();
}
protected:
!IMyClassWrapper() {
delete mPtrResource;
mPtrResource = 0;
}
};
はです#を#忘れた可能性がありますか?コンパイラは、どのようなベクトルがわからないようです。 –
gnobal
@gnobal、いいえ、私はしませんでした。コードスニペットが更新されました。 – Graviton
@gnobal、コンパイルエラーを修正しました。しかし、今では、対応する.Netコードを書く方法を知らないままで立ち往生しています。更新された質問を参照してください。 – Graviton