私はC++で書かれたコード(私は書かなかった)を持っていて、それをC#で使用したいので、dllを作成し、そこからこのクラスを使用することにしました。
私はC++の知識がほとんどなく、C#プロジェクトでこのクラスのメソッドを参照する際に問題が発生しています。
C++コードは次のようになります。
#ifndef BeamAn_class
#define BeamAn_class
#define DllExport __declspec( dllexport )
#include <vector>
#include <cmath>
using namespace std;
public class DllExport BeamAn
{
public:
BeamAn();
~BeamAn();
bool SetGeometry(vector<double>); //I didn't put the DllExport here because I already did it for the whole class. It's okay to do this, right?
//other public methods an stuff
private:
//private methods an stuff
}
#endif
私のC#プロジェクトでは、通常、C ++ dllへの参照を追加しました(プロジェクトを右クリックして、参照を追加します。.libファイルと.hファイルはdllの同じフォルダーにあります)。
しかし、VisualStudioは私のクラスのメソッドを「見る」ことができないようです。BeamAnタイプのオブジェクトを作成できますが、そのメソッドを使用できません。たとえば、次のように実行できます。BeamAn contBeam = new BeamAn(); ただし、次のように、クラス内でメソッドやアトリビュートを使用することはできません。contBeam.SetLoadFactors(1.0,1.2);
Visual Studioによると、「BeamAnには「SetLoadFactors」の定義が含まれておらず、最初の引数タイプ「BeamAn」を受け入れる拡張メソッド「SetLoadFactors」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
dllを正しく機能させるためにC++コードに書き込む必要のあるものは他にもありますか、それとも参照時に何か間違ったことをしていますか?明示的にリンクしている場合は、C#コードで「DllImport」を使用する必要があることはわかっていますが、それは私がやりたいことではありません。
どうもありがとうございます!