J'essaie de transmettre des données de texture brutes de Texture2D (tableau d'octets) au code C++ non managé. En C# longueur du tableau de code est environ 1,5kk, mais en C++ 'sizeof' retourne toujours 8.Passer un tableau d'octets de Unity C# à C++
C# déclaration de méthode native:
[DllImport("LibName", CallingConvention = CallingConvention.Cdecl)]
static extern IntPtr ProcessData(byte[] data);
C++:
extern "C" {
__declspec(dllexport) void ProcessData(uint8_t *data) {
//sizeof(data) is always 8
}
}
Que suis-je mal faire? Est-il possible de transmettre un tableau sans allocation de mémoire supplémentaire dans le code C++?
'sizeof (données)' vous indique la taille du ** pointeur **, vous ne pouvez pas déduire la taille de la pointé vers un tableau à partir d'un pointeur, vous devez le passer séparément – UnholySheep