Попытка чтения / записи защищенной ошибки памяти при пинковании функции c ++

0

У меня есть проект C++ X с соглашением о вызовах как __stdcall (/Gz) и проект С# Y.

Я определил класс myClass в BOTH этих проектах.

class myClass
{
    private:int mem1;
};

В определении класса С# я префикс

[StructLayout(LayoutKind.Sequential)]

Функция C++

 _declspec (dllexport) void getLen(myClass* str)
 {
     printf("%s",sizeof(int));
 }

В Y, я определил функцию следующим образом

[DllImport("X.dll")]
private static extern void getLen(ref myClass str);

И я называю это так:

getLen(ref str);

где str - объект типа myClass.

Почему эта ошибка возникает, когда я запускаю это решение?

Теги:
pinvoke

1 ответ

2
Лучший ответ

Ваша проблема заключается в вызове printf(): "%s" ожидает указатель на строку символов с нулевым символом, но вы предоставляете size_t.

  • 0
    Хорошо, я чувствую себя действительно глупо. Это сработало. Спасибо! В моем пинвокинге не было ничего плохого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню