네이티브 C++를 래핑하는 관리되는 C++ 코드를 만들어야한다고 가정합니다. 하지만 네이티브 C++에서 정의 된 형식의 함수 매개 변수에 사용 된 배열을 래핑하는 동안 문제가 있습니다. 네이티브 C++ 코드는 다음과 같습니다.C# 클래스를 C#에서 호출하는 방법
//unmanageCPP.h
class __declspec(dllexport) unmanageMoney
{
public:
unmanageMoney(int a, int b) { rmb = a; dollar = b; }
unmanageMoney() { rmb = 0; dollar = 0; }
int rmb;
int dollar;
};
class __declspec(dllexport) unmanageSum
{
public:
//how to wrap this funciton?
int addDollar(unmanageMoney a[], unmanageMoney b[]);
};
//unmanageCPP.cpp
#include "unmanaged.h"
int unmanageSum::adddollar(unmanageMoney a[], unmanageMoney b[])
{
return a[0].dollar + b[0].dollar;
}
아무에게도 manageCPP.h 작성 방법을 알려 줄 수 없습니까? 매우 감사합니다!
업데이트
다음과 같이 나는 manageCPP.h를 구성,하지만 난 addDollar을 작성하는 방법을 모른다()
//first, I wrap the class unmanageMoney for use in manageSum::addDollar()
public ref class manageMoney
{
private:
unmanageMoney* mMoney;
public:
unmanageMoney getMoney()
{
return *mMoney;
}
manageMoney(int a, int b) { mMoney = new unmanageMoney(a, b); }
~manageMoney() { delete mMoney; }
};
public ref class manageSum
{
// TODO: Add your methods for this class here.
private:
unmanageSum *mSum;
public:
manageSum()
{
mSum = new unmanageSum();
}
~manageSum()
{
delete mSum;
}
//it must be wrong if I code like this, for unmanageSun::adddollar() only
// receives unmanageMoney as arguments. So what should I do?
int adddollar(manageMoney a[], manageMoney b[])
{
return mSum->adddollar(a, b);
}
};
@CDBean 질문에 대한 업데이트 또는 제공 할 세부 정보가있는 경우 원래 질문을 편집하여 새 데이터를 포함하십시오. – Sampson
인수는'addDollar'에 대한'cli :: array a'를 원할 것입니다. 이것은 C#에서'manageMoney [] a'로 나타날 것입니다. –
'unmanagedSum :: adddollar'에'unmanagedMoney a '가 아닌'unmanagedMoney a []'를 원하십니까? 배열의 첫 번째 항목 만 원하는 것처럼 보이며 대신 참조 (또는 포인터)를 사용하여 수행 할 수 있습니다. –