|
|
|
JNI
|
|||
|---|---|---|---|
|
#18+
Пытаюсь заюзать dll из JAVA. Следую инструкции в книге и на первом же шаге уткнулся в стену. На JAVA работал мало. Использую JDeveloper. Так вот создаю.... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. выдает Код: plaintext плюс ко всему Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:37:50 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIПытаюсь заюзать dll из JAVA. Как заюзать? Переформулируй вопрос что ты хочеш? А по поводу ошибки тебе явно сказанно что dll, нету в пути поиска dll. В доке описанно где JVM ищет по умолчанию и где её надо класть. И как добавить путь поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:46:36 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Хочу в JAVA вызвать функцию dll, написанную на С++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 16:56:59 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
А как узнать, где java.library.path ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2006, 17:23:08 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
полезная ссылка java.library.path - это путь к каталогу, где у тебя храниться твоя dll. это если указывать через опцию -Djava.library.path (см. ссылку выше) динамические библиотеки можно подключать из самого приложения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. (см. ссылку выше.) Кроме того, имена функций в dll должны формироваться по определенному правилу(см. ссылку выше.) java.sun.com Dynamic linkers resolve entries based on their names. A native method name is concatenated from the following components: 1.the prefix Java_ 2.a mangled fully-qualified class name 3.an underscore (“_”) separator 4.a mangled method name 5.for overloaded native methods, two underscores (“__”) followed by the mangled argument signature The VM checks for a method name match for methods that reside in the native library. The VM looks first for the short name; that is, the name without the argument signature. It then looks for the long name, which is the name with the argument signature. Programmers need to use the long name only when a native method is overloaded with another native method. However, this is not a problem if the native method has the same name as a nonnative method. A nonnative method (a Java method) does not reside in the native library. In the following example, the native method g does not have to be linked using the long name because the other method g is not a native method, and thus is not in the native library. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:01:52 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
полезная ссылка java.library.path - это путь к каталогу, где у тебя храниться твоя dll. это если указывать через опцию -Djava.library.path (см. ссылку выше) динамические библиотеки можно подключать из самого приложения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. (см. ссылку выше.) Кроме того, имена функций в dll должны формироваться по определенному правилу(см. ссылку выше.) java.sun.com Dynamic linkers resolve entries based on their names. A native method name is concatenated from the following components: 1.the prefix Java_ 2.a mangled fully-qualified class name 3.an underscore (“_”) separator 4.a mangled method name 5.for overloaded native methods, two underscores (“__”) followed by the mangled argument signature The VM checks for a method name match for methods that reside in the native library. The VM looks first for the short name; that is, the name without the argument signature. It then looks for the long name, which is the name with the argument signature. Programmers need to use the long name only when a native method is overloaded with another native method. However, this is not a problem if the native method has the same name as a nonnative method. A nonnative method (a Java method) does not reside in the native library. In the following example, the native method g does not have to be linked using the long name because the other method g is not a native method, and thus is not in the native library. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 10:04:55 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
И ещё одно я не понял, при чтении статей. У меня есть dll, но её разрабатывал не я и нет её исходников. Могу ли я её "прицепить" к java, если она писалась под Delphi и Си. Т.е требуются ли доработки в dll для использования в Java? Извиняюсь за утренний сумбур... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 11:03:23 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIИ ещё одно я не понял, при чтении статей. У меня есть dll, но её разрабатывал не я и нет её исходников. Могу ли я её "прицепить" к java, если она писалась под Delphi и Си. Т.е требуются ли доработки в dll для использования в Java? Извиняюсь за утренний сумбур... Угу. Видно что чел, не читает присланные ему ссылки. Ты не можеш вызвать функцию из DLL эсли она не написанна для использвоания с java. В твоем случае MsgImpl.dll должна экспортировать метод Java_mypackage_ShowMessage_ShowMessage. Проверить ты это можеж используюя утилиту impdef которая создаст def для dll. Но скорее всего ты хочеш вызвать метод который экспортируется как _ShowMessage, этого сделать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 11:45:19 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Евгений Путилин JNIИ ещё одно я не понял, при чтении статей. У меня есть dll, но её разрабатывал не я и нет её исходников. Могу ли я её "прицепить" к java, если она писалась под Delphi и Си. Т.е требуются ли доработки в dll для использования в Java? Извиняюсь за утренний сумбур... Угу. Видно что чел, не читает присланные ему ссылки. Ты не можеш вызвать функцию из DLL эсли она не написанна для использвоания с java. В твоем случае MsgImpl.dll должна экспортировать метод Java_mypackage_ShowMessage_ShowMessage. Проверить ты это можеж используюя утилиту impdef которая создаст def для dll. Но скорее всего ты хочеш вызвать метод который экспортируется как _ShowMessage, этого сделать нельзя. Ссылку проситал, только хотел уточнить, а то у меня господа-товарищи говорят, что в java можно использовать любую dll, написанную для использования в С и Delphi ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 11:56:35 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Евгений Путилин Ты не можеш вызвать функцию из DLL эсли она не написанна для использвоания с java. В твоем случае MsgImpl.dll должна экспортировать метод Java_mypackage_ShowMessage_ShowMessage. Проверить ты это можеж используюя утилиту impdef которая создаст def для dll. но никто не мешает написать свой враппер в виде DLL, оформленой соовтетствующим образом, и вызывать уже его методы. Это, конечно, скажется на производительности. Пример из книжки: Код из *.h файла Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Java класс, использующий dll Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код враппера вызывающего функцию из целевой dll. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:18:15 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Т.е., для того, чтобы использовать мою dll в JAVA, можно обойтись без исходников dll, а только написать врапер ? Т.е достатлчно MYDLL.H? Сорри - перевожу аглицкий очень долго. Изучал немецкий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:37:45 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIТ.е., для того, чтобы использовать мою dll в JAVA, можно обойтись без исходников dll, а только написать врапер ? Т.е достатлчно MYDLL.H? Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2006, 12:43:53 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Столкнулся с двумя проблемами: 1. Использование Dll в Java 2. Никогда не писал dll, тем более в Си. НА изучение уйдет много времени. Поэтому не примите за дерзость, прошу помощи в виде наставлений. Я не прошу написания кода, помогите просто подсказками. Может в результате получится какое нибудь руководство по использованию dll в Java. ДЛЯ ЧАЙНИКОВ. Итак. У меня есть dll. И два файла *.h. В первом список функций из dll, а другой состоит из конструкций типа Код: plaintext Теперь пытаюсь делать обвязку своей dll. Т.е. создам dll для Java, которая будет вызывать функции первой dll. В Вorland С++ Builder 6 Код: plaintext Source Type -> C++ , а со всех остальный пунктов снимаю "галочки" (USE VCL, USE CLX, Multi Threaded, VC++ Style DLL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 11:54:14 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Timm тынц Да я уже это читал и на русском, у меня опыт мал. Мне бы на примерах. Вот мой *.h (урезан) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Попытаюсь "собрать" враппер. Посмотрите, правильно ли я сделал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:32:42 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Последнюю функцию недописал Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 12:34:26 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Есть здесь правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 13:03:08 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIЕсть здесь правда Пока писал пример вы уже почти разобрались :) То, что бросилось в глаза: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Как вы собрираетесть из java передавать эту структуру в WriteCard(unsigned char* Data, TUID &UID, unsigned char Pam, unsigned char KSet); ? Для нее надо бы заводить отдельный класс c native методами для доступа к полям и хранить в нем указатель на native структуру. Тогда при передаче экземпляра этого класса в native метод в качестве параметра сможете получить указатель на структуру и передать его в качестве параметра в нужную функцию. Второе. SearchDevices(AnsiString* DeviceName, int &DeviceCount); возвращает, как я понимаю, код ошибки. В DeviceName она записывает список девайсов, а в DeviceCount - количество девайсов. В java примитивный тип int передается по значению. Так что Java_Win32_SearchDevices(jstring DeviceName, jint DeviceCount) изменит копию DeviceCount. И реального значения Вы не получите(могу. конечно, ошибиться). Кроме того, AnsiString* DeviceName, по идее должен бы быть jobjectArray (String[] в java классе) а не jstring как у Вас. Вообще, лучше завести отдельный класс для возвращаемого этой функцией результата и привести ее к виду вроде DeviceList SearchDevices(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 13:44:22 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Спасибо за поддержку. Но чем больше читаю документации, тем больше путаюсь. Все таки, когда ж использовать javah? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 13:49:41 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIВсе таки, когда ж использовать javah? javah это утилита, которая входит в jdk. Вещь для облегчения нашей жизни. Вот у нас есть java класс. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. мы запускаем javac Native.java javah Native и получаем то, о чем мы с Вами говорим - Native.h: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Теперь имплементим его в нашей dll, и все счастливы :) Если у нас будет не 3 функции а 300... Результат понятен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 14:00:13 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
foo[quot JNI] Результат понятен. Понятен, только пытаюсь сам так сделать (в Java написать этот класс) и не получается. Показывает ошибки. В JDeveloper создаю новый Application, новый Project , затем новый JAVA Class вставляю твой пример и ругается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 14:35:55 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNI вставляю твой пример и ругается И что говорит? У меня в eclipse не ругается. Попробуй из командной строки скомпилировать. Может говорит что package не тот? А файлик правильно обозвал? (Он должен назаваться Native.java). А может ему слово Native не нравиться(вроде как ключевое слова языка, хотя java регистр различает)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:00:21 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
foo JNI вставляю твой пример и ругается И что говорит? У меня в eclipse не ругается. Попробуй из командной строки скомпилировать. Может говорит что package не тот? А файлик правильно обозвал? (Он должен назаваться Native.java). А может ему слово Native не нравиться(вроде как ключевое слова языка, хотя java регистр различает)? С этим тоже разобрался. Наклепал Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Скопировал полученный Native.class в D:\Native\Native.class Запускаю в командной строке javac -jni в D:\Native\Native.class ?, а в ответ, что javac не является внутренней командой. Буду с этим разбираться, но уж точно, что я сегодня по крупному торможу. Спасибо foo за поддержку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:09:32 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIСпасибо foo за поддержку Да не за что :). У нас тут не форум а чат получился :) JNIjavac -jni в D:\Native\Native.class javac - это компилятор java. Надо не javac -jni, а javah -jni .class НЕ НУЖНО! если запускать в D:\Native\ надо javah -jni Native -jni - нужен в java 1.4, а в 1.5 - эта опция включена по умолчанию. Что бы не получать сообщения о том, что javac не является внутренней командой надо запускать windows: %JAVA_HOME%\bin\java %JAVA_HOME%\bin\javac %JAVA_HOME%\bin\javah %JAVA_HOME%\bin\остальные_утилиты_jdk *nix: $JAVA_HOME\bin\java $JAVA_HOME\bin\javac $JAVA_HOME\bin\javah $JAVA_HOME\bin\остальные_утилиты_jdk где %JAVA_HOME%($JAVA_HOME) - переменная окружения хранящая путь к коревому каталогу jdk. т.е. в твоем случае %JAVA_HOME%\bin\javah -jni Native ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:24:57 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
По всякому попробовал, пишет, что файл не найден. А куда долженрезультат сохранить, туда, где и Native? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:37:37 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Или при некоторых вариантах запустится пустое черное DOS окно и исчезнет, не оставя за собой никаких следов в виде файлов :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:45:29 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Да. Вот мой лог из консоли: D:\Native>dir /b Native.java D:\Native>echo %JAVA_HOME% C:\jdk1.5.0_06 D:\Native>%JAVA_HOME%/bin/javac Native.java D:\Native>dir /b Native.class Native.java D:\Native>%JAVA_HOME%/bin/javah -jni Native D:\Native>dir /b Native.class Native.h Native.java D:\Native> по идее должно помочь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 15:46:16 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Проверил наличие переменной окружения JAVA_HOME . Нет такой. Создал SET JAVA_HOME = C:\Program Files\Java|Developer\jdk. . Проверяю echo %JAVA_HOME% , в ответ выдает строку %JAVA_HOME% . Просмотрел список всех переменных окружения SET -там есть и в нужной форме. Чепуха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:09:35 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIПроверил наличие переменной окружения JAVA_HOME . Нет такой. Создал SET JAVA_HOME = C:\Program Files\Java|Developer\jdk. . Проверяю echo %JAVA_HOME% , в ответ выдает строку %JAVA_HOME% . Просмотрел список всех переменных окружения SET -там есть и в нужной форме. Чепуха. Так, это был мой глюк. Написал SET JAVA_HOME = C:\Program Files\Java|Developer\jdk. с пробелами с обоих сторон относительно знака "=" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:11:44 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
fooДа. Вот мой лог из консоли: D:\Native>dir /b Native.java D:\Native>echo %JAVA_HOME% C:\jdk1.5.0_06 D:\Native>%JAVA_HOME%/bin/javac Native.java D:\Native>dir /b Native.class Native.java D:\Native>%JAVA_HOME%/bin/javah -jni Native D:\Native>dir /b Native.class Native.h Native.java D:\Native> по идее должно помочь Набираю в командной строке Total commandr и Far Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:22:49 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
автор Набираю в командной строке Total commandr и Far D:\Native>%JAVA_HOME%/bin/javah -jni Native D:\Native>%JAVA_HOME%/bin/javac Native.java Не работает А в такой последовательности и не будет работать. надо: D:\Native>%JAVA_HOME%/bin/javac Native.java D:\Native>%JAVA_HOME%/bin/javah -jni Native Почему - RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:31:14 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
foo автор Набираю в командной строке Total commandr и Far D:\Native>%JAVA_HOME%/bin/javah -jni Native D:\Native>%JAVA_HOME%/bin/javac Native.java Не работает А в такой последовательности и не будет работать. надо: D:\Native>%JAVA_HOME%/bin/javac Native.java D:\Native>%JAVA_HOME%/bin/javah -jni Native Почему - RTFM Это я понял, я имел в виду, что не одна их них не работает. D:\Native>%JAVA_HOME%/bin/javah -jni Native должна работать, когда есть Native.class и Native.java . А D:\Native>%JAVA_HOME%/bin/javac Native.java достаточно только Native.class . Суть в том, что ничего это не работает. Может это быть из-за того, что java "говорит" ??? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:37:45 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:44:36 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNI Это я понял, я имел в виду, что не одна их них не работает. D:\Native>%JAVA_HOME%/bin/javah -jni Native должна работать, когда есть Native.class и Native.java. А D:\Native>%JAVA_HOME%/bin/javac Native.java достаточно только Native.class. Суть в том, что ничего это не работает. Может это быть из-за того, что java "говорит" ??? НЕТ!!! javac - это КОМПИЛЯТОР!!!! Он из ИСХОДНОГО ТЕКСТА, КОТОРЫЙ НАХОДИТЬСЯ В Native.java(!!!), "ДЕЛАЕТ" Native.class После того, как сделан Native.class надо "скормить" его javah. Для этого исходник уже НЕ НУЖЕН! результатом выполнения javah буде Native.h Native.h надо имплементировать в device.dll - тоесть написать реализацию методов хедера. исходный код device.dll надо скомпилировать компилятором C/C++. полученную dll-ку скормить java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:45:52 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
C этой частью разобрался! Надо было настроить переменные среды JAVA_HOME и PATH ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:43:48 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
автор Код: plaintext 1. 2. 3. 4. 5. 6. Как вы собрираетесть из java передавать эту структуру в Write(unsigned char* Data, TUID &UID, unsigned char Pam, unsigned char KSet); Для нее надо бы заводить отдельный класс c native методами для доступа к полям и хранить в нем указатель на native структуру. Тогда при передаче экземпляра этого класса в native метод в качестве параметра сможете получить указатель на структуру и передать его в качестве параметра в нужную функцию. Вот это как-то не очень понятно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 12:40:40 |
|
||
|
JNI
|
|||
|---|---|---|---|
|
#18+
JNIТак что ли? Нет. Я имел ввиду следующее: Вот такой java класс: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. Получаем хедер: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. И пишем реализацию(Не проверял на наличие ошибок, но идея должна быть понятна), подключив все нужные хедеры. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Тогда при создании класса TUID мы будет автоматически создаваться nativeная структура. И при уборке мусора она,если надо, будет уничтожена GC. Мы получим доступ ко всем полям структуры и сможем легко получать указатель на нее, если нам надо передать ее в качестве параметра в функцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 14:11:13 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2147964]: |
0ms |
get settings: |
9ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
196ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 561ms |

| 0 / 0 |
