我有我想从 c# 访问的 c++ 非托管代码。所以我遵循了一些教程,并为我的项目构建了一个 dll(顺便说一句,只有一个类)。现在我想从 c# 中使用它,我正在使用 p/invoke,如下所示。
我的问题是:是否可以编组我的 windows 点,以便我可以将它作为向量传递到我的 c++ 代码中?我可以更改所有代码(除了 qwindows 点,但我可以提出自己的观点)。有没有我不必创建交流包装器的解决方案?我在关注这个问题:How to call an unmanaged C++ function with a std::vector<>::iterator as parameter from C#?
非常感谢1 ps,我找到了一个“解决方案”,但我无法查看它http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_21461195.html
C#
using Point = System.Windows.Point;
class CPlusPlusWrapper
{
[DllImport("EmotionsDLL.dll", EntryPoint = "calibrate_to_file")]
static extern int calibrate_to_file(vector<points> pontos);//marshall here
[DllImport("EmotionsDLL.dll", EntryPoint = "calibration_neutral")]
static extern int calibration_neutral();
/// <summary>
/// wraps c++ project into c#
/// </summary>
public void calibrate_to_file() {
}
dll头文件
namespace EMOTIONSDLL
{
struct points{
double x;
double y;
double z;
};
#define db at<double>
class DLLDIR EMOTIONS
{
public:
EMOTIONS();
CvERTrees * Rtree ;
vector<points> mapear_kinect_porto(vector<points> pontos);
void calibrate_to_file(vector<points> pontos);
int calibration_neutral();
int EmotionsRecognition();
};
}