26. januar 2015 - 14:14Der er
9 kommentarer og 1 løsning
Wrapper klasse til native c++ - unsigned char**
Hej,
Jeg har behov for at lave en wrapper klasse omkring en native c++ klasse som jeg kan bruge i mit C# projekt. Jeg har både dll, lib og header fil til klassen.
Jeg er dog lidt i vildrede hvordan definitinonen skal se ud og hvordan jeg skal implementere unsigned char **foo - håber I kan hjælpe.
Min header fil ser sådan ud (anonymiseret):
namespace foo{ namespace bar{
class foobar_EXPORT JohnDoe { public: JohnDoe() {} ~JohnDoe() {}
bool MakeTheImage(char *serialNumber, unsigned char **imageData, int &image_len);
};
Hvis I kunne komme med et eksempel på hvordan det skal implementeres i wrapper klassen og hvordan den wrapper klasse bruges i c# vil jeg være utrolig glad. Det overordnede mål er at kunne bruge denne native klasse i C#.
JohnDoeClass::JohnDoeClass() { _client_instance = new foo::bar::JohnDoe(); }
JohnDoeClass::~JohnDoeClass() { if (_client_instance != nullptr) delete _client_instance; } bool JohnDoeClass::MakeTheImage(String^ serialNumber, unsigned char **imageData, [Out] int image_len); { const char *serial = nullptr; unsigned char *image = nullptr; int imageLen; try { serial = (const char *)Marshal::StringToHGlobalAnsi(serialNumber).ToPointer(); res = _client_instance->MakeTheImage(sn, imageData , imageLen) image_len = imageLen;
} finally { if (serial != nullptr) Marshal::FreeHGlobal(IntPtr((void*)serial)); }
return true;
}
Men jeg ved ikke om jeg bare kan bruge unsigned char **imageData og så en IntPtr i C# eller hvad jeg evt. skal lave det om til. Jeg har ikke testet ovenstående, da jeg føler der mangler noget, eller jeg evt. ikke ryder rigtigt op?
Ved hellere ikke om jeg er helt på vildspor, har brug for et skub videre.
Ikke rigtigt meget hjælpe eller løsning jeg fik. Lukker spørgsmålet
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.