Я хочу передать объект класса C # в C ++, а в собственном коде c ++ хочу вызвать какой-то метод для этого переданного объекта.
Public class MyClass{
{
bool IsThisValid()
{
IsValid(this);//Check the Native passing it this object
}
[DllImport("mylibraryinCpp.dll", EntryPoint="IsValid", CharSet=CharSet.Unicode, CallingConvention=CallingConvention.StdCall) ]
static internal extern bool IsValid(object);
}//end of class
Теперь нужно, чтобы код C ++ получил этот объект и выполнил над ним некоторую операцию.В нативном коде C ++ у меня есть подпись
//Native C++ code mylibraryinCpp.dll
extern "C" __declspec(dllexport) BOOL __stdcall IsValid (VARIANT theObject)
{
((mscorlib::_object*)(thObject.pdispVal))->get_ToString(bstrStringVal);//AccessViolationException occurs here.
}
. Приведенный выше код работает в большинстве случаев, но иногда он дает исключение AccessViolationException, в другой памяти может быть повреждено сообщение.Я новичок в этом, поэтому не уверен, что это правильный путь для передачи объекта из C # в C ++?Спасибо за любые предложения