我有一个用 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 的同一文件夹中)。
但看起来 Visual Studio 无法“看到”我班级的方法。我可以创建一个 BeamAn 类型的对象,但不能使用它的任何方法。例如,我可以这样做: BeamAn contBeam = new BeamAn(); 但不能使用类内部的任何方法或属性,例如:contBeam.SetLoadFactors(1.0,1.2);
Visual Studio 说“BeamAn 不包含‘SetLoadFactors’的定义,并且找不到接受第一个参数类型‘BeamAn’的扩展方法‘SetLoadFactors’(您是否缺少 using 指令或程序集引用?)
我应该在 C++ 代码中编写更多内容以使 dll 正常工作,还是在引用它时我做错了什么?我知道如果我是显式链接,我必须在我的 C# 代码中使用“DllImport”,但这不是我想要做的。
非常感谢!