Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с dll на Java 
:(
    Опции темы
ShkVal
Дата 1.2.2005, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Я так уже и сделал только теперь другая проблемма

E:\Test>"C:\Program Files\Microsoft Visual Studio\VC98\Bin\CL.EXE" -IC:\j2sdk1.4
.2_05\include -IC:\j2sdk1.4.2_05\include\win32 -LD e:\Test\JniTest.cpp -FeJniTes
t.dll
Microsoft ® 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
Copyright © Microsoft Corp 1984-1998. All rights reserved.

JniTest.cpp
Microsoft ® Incremental Linker Version 6.00.8447
Copyright © Microsoft Corp 1992-1998. All rights reserved.

/dll
/implib:JniTest.lib
/out:JniTest.dll
JniTest.obj
LINK : fatal error LNK1104: cannot open file "LIBCMT.lib"

Где должен лежать этот файл или надо ещё, что-то укозать? Т е куда надо скопировать все требуемые либы (*.lib) или как указать к ним путь?

Это сообщение отредактировал(а) ShkVal - 1.2.2005, 19:09
PM MAIL   Вверх
AntonSaburov
Дата 1.2.2005, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Спроси это в форуме по Си - я честно говоря уже не помню. Есть там какой-то ключик. Посмотри в документации.
PM MAIL WWW ICQ   Вверх
ShkVal
Дата 1.2.2005, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



А как у тебя всё это проходит? Без укозания ключа или ещё чего-ниб smile smile
Народ кто знает как решить проблемму?
PM MAIL   Вверх
AntonSaburov
Дата 1.2.2005, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



У меня установлена переменная окружения LIB. Она у меня равна
C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Microsoft Visual Studio\VC98\lib
Добавлено @ 20:07
Еще переменные

Вот PATH:
C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin

Вот INCLUDE:
C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Files\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual Studio\VC98\include

Вот JAVA_HOME:
C:\JAVA\SDK\j2sdk1.4.2_06
PM MAIL WWW ICQ   Вверх
Orange
Дата 2.2.2005, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 6.9.2004
Где: Russia, Moscow

Репутация: 4
Всего: 5



Цитата(ShkVal @ 31.1.2005, 12:31)
Подскажите. Может кто вызывал методы из dll-файлов написанных на С++ из Java. Как это делается?

здесь была похожая тема - http://forum.vingrad.ru/index.php?showtopic=35711&hl=
--------------------
Пару дней назад я познакомился с мальчиком......
PM MAIL ICQ   Вверх
ShkVal
Дата 3.2.2005, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Подскажите ещё пожалуйста!
Как мне в native функции которая лежит в dll написанной на С++ сформировать объект Java например ArrayList, Map, String, чтобы после вызова этой функции она вернула то что мне надо и я дальше мог использовать то что вернула мне эта функция в своём Java-проекте. Т. е. как мне вернуть java-объект. Если не возможно, то что можно вернуть, чтобы с этим можно дальше работать в Java?

Это сообщение отредактировал(а) ShkVal - 3.2.2005, 10:49
PM MAIL   Вверх
AntonSaburov
Дата 3.2.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



В принципе можно вызвать JAVA из нативного метода. Посмотри ссылку в самом начале статьи. Там есть пример (уже сановский) как можно сделать обратную задачу - вызвать JAVA-код из обычного.
Может стоить обратить внимание (может сейчас и не так)- когда-то давно я провозился очень долго, ничего не работало. В JDK есть две jvm.dll. Так вот возможно, что все будет работать только с той, которая лежит в каталоге client.
А когда я возился - нужная jvm.dll лежала не в SDK, а в JRE. Пришлось пути править, чтобы правильную искала.

Но вот по поводу создания и возвращения JAVA-объекта - я честно говоря не знаю. Не пробовал.
Можешь попробовать сам и сообщить результаты - будет огромное СПАСИБО.
PM MAIL WWW ICQ   Вверх
ShkVal
Дата 10.2.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Всё вроде сделал как надо.
Библиотека (dll) подгружается
Но при вызове уже native-метода в Java происходит exception такого рода java.lang.UnsatisfiedLinkError.
Может кто подскажет из-за чего это может быть?

Это сообщение отредактировал(а) ShkVal - 10.2.2005, 12:27
PM MAIL   Вверх
ShkVal
Дата 10.2.2005, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Может из-за этого не работает?
Я просмотрел свою Dll-ку Visual Studio тулзом DEPENDS и он выдал имя функции в dll в таком виде _Java_JniTest_showString@28 хотя в файле JniTest.cpp она задана как Java_JniTest_showString. Это так надо или тут что-то не то?
PM MAIL   Вверх
LSD
Дата 10.2.2005, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(ShkVal @ 10.2.2005, 12:18)
Но при вызове уже native-метода в Java происходит exception такого рода java.lang.UnsatisfiedLinkError.

Проверь, что каталог в котором она находится прописан в PATH или она лежит в текущем каталоге.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ShkVal
Дата 11.2.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



LSD, Dll-ка подгружантся. При System.loadLibrary("JniTest") не вылетает, значит доступ к ней есть. Вылет же происходит уже при вызове функции из этой библиотеке. Такое ощущение что он не видит функции в dll.
Код

java.lang.UnsatisfiedLinkError: showString
at ucheba.JniTest.showString(Native Method)
at ucheba.JniMain.main(JniMain.java:13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:78)
Exception in thread "main"

Может кто знает в чём проблемма?

Это сообщение отредактировал(а) ShkVal - 11.2.2005, 13:51
PM MAIL   Вверх
ShkVal
Дата 11.2.2005, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Может я как-то непонятно изложил суть проблеммы? Если надо уточнения я поясню.
Не могу понять вроде всё правильно делаю smile smile
PM MAIL   Вверх
LSD
Дата 12.2.2005, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



У тебя неправильный заголовочный файл. Для метода ucheba.JniTest.showString сишная функция должна быть Java_ucheba_JniTest_showString, а не Java_JniTest_showString как у тебя, т.е у тебя пропущенно имя пакета.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ShkVal
Дата 14.2.2005, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



LSD и AntonSaburov спасибо. Жалко, что я не могу поднять рейтинг.
PM MAIL   Вверх
ShkVal
Дата 21.3.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 10.11.2004

Репутация: нет
Всего: 1



Может кто знает мне в dll написанную на C++ нужно передать юникод т.е. получить в моей dll-ке из jstring значение ввиде const unsigned short* и передать это в функцию другой dll-ки (той которую я юзаю)

Как вытащить строку в юникоде?

Это сообщение отредактировал(а) ShkVal - 21.3.2005, 20:44
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.