У меня есть проект 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.
Почему эта ошибка возникает, когда я запускаю это решение?
Ваша проблема заключается в вызове printf()
: "%s"
ожидает указатель на строку символов с нулевым символом, но вы предоставляете size_t
.