我有一个C ++项目,希望能够用C#调用这些函数。
我创建了一个C ++类库,并在C#项目中引用了它。一切正常。 (我知道方法定义应该只在.h文件中,方法体应该在.cpp文件中。对于这个例子,我会把它一起写。)
//Definition in C++
namespace Formularia {
public ref class functions{
public:
long calculateSum(long a, long b){
return a + b;
}
};
}
有了这个,我可以用C#调用它,如下所示:
long result = functions.calculateSum(1, 2);
我可以像这样运行它,但是说'无法加载文件或程序集'............'或其中一个依赖项'。
如果我删除ref
,如下所示:
namespace Formularia {
public class functions{
public:
functions();
long calculateSum(long a, long b){
return a + b;
}
};
}
在我看来,我应该可以在C#中这样称呼它:
functions f = new functions();'
f. //I do not get the method here, it is unknown
我尝试的另一件事是在Namespace级别创建方法:
//Definition in C++
namespace Formularia {
static long calculatesum(long a, long b){
return a + b;
}
}
我不能将方法公开,它需要一个标识符。但我也不能打电话; Formularia.calculatesum(1, 2)
。还尝试在这里删除静态。
解决方案可能很简单,但我更喜欢把它称为C#中的静态类。 (与参考示例一样)。有谁看到我做错了什么?