Außerdem gibt es bei dynamischen Arrays Referenzzählung: 8 Byte vor dem ersten Element befindet sich ein Integer, der die Anzahl der gültigen Referenzen anzeigt.
Variante Records sind überhaupt kein Problem. In C kann man dafür Unions verwenden, in anderen Sprachen muss eventuell ein bisschen getrickst werden, falls sie dieses Konzept nicht unterstützen, aber auch das ist nicht schwierig.
Bei dynamischen Arrays kommt es darauf an, was du in der
DLL mit ihnen machen willst. Du kannst aus DLLs auf keinen Fall die Länge ändern, aber sowohl Lesen als auch Schreiben einzelner Elemente sollte funktionieren.