Взаимодействие между native код, Java и .Net
Тази тема все още се пише...I. Извикване на native код от Java
II. Извикване на Java код от native
III. Извикване на native код от .Net
IV. Извикване на .Net код от native
V. Маршалинг
Ще бъде разгледани:
- native код писан на C/C++
- Java VM байт код писан на Java
- .Net CLR код писан на C#
Но нека караме по ред наномерата.
I. Извикване на native код от Java
II. Извикване на Java код от native
III. Извикване на native код от .Net
За да се вика COM dll от .Net трябва да се създаде "обвивка" - асембли, което ще извиква методите на COM-а. Програмата TlbImp.exe помага много, но в някои случаи (например с масиви) не се справя добре. В случай на проблем - с малко ръчна доработка нещата стават (не гледайте че статията е за стара версия на .Net - работи и за версия 3.5).IV. Извикване на .Net код от native
V. Маршалинг
Конвертирането на типовете на данните между native и managed кода се нарича маршалинг (Marshaling).Тип | Битове в Java | Битове в C# | Стойности | Ст-т по подразбиране |
bool | 1 бит от 32-битов integer; 32 booleans - 32 бита от 32-битов integer |
8 | true, false | false |
byte | 8 | 8 | -128 до 127 | 0 |
short | 16 | 16 | -32768 до 32767 | 0 |
int | 32 | 32 | -2147483648 до 2147483647 | 0 |
long | 64 | 64 | -9223372036854775808 до 9223372036854775807 | 0 |
float | 32 | 32 | IEEE 754 floating point | 0.0 |
double | 64 | 64 | IEEE 754 floating point | 0.0 |
decimal | - | 128 | ? | 0.0 |
char | 16 | 16 | Unicode символ | \u0000 |