![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Pavel_V |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
Хочу через JNI вызвать функцию winapi.
беру класс-враппер (hellonative.java):
комплилирую: javac hellonative.java получаю заголовок: javah HelloNative (hellonative.h)
делаю функцию, которая будет вызывать winApi: (hellonative.cpp)
вызываю компилятор: cl -I "c:\Program Files\java\jdk1.6.0\include" -I"c:\program files\java\jdk1.6.0\include\win32" -LD HelloNative.cpp -FeHelloNative.dll получаю вот что: /dll /implib:HelloNative.lib /out:HelloNative.dll HelloNative.obj Creating library HelloNative.lib and object HelloNative.exp HelloNative.obj : error LNK2001: uresolved external symbol __imp__GetDesktopWindow@0 HelloNative.dll :fatal error LNK1120: 1 unresolved externals В Си я дуб, по этому могу чего-то не понимать. Помогите пожалуйста разобратся, как это сделать. Без winApi все работало, компилилось и вызывалось. |
||||||
|
|||||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Наверное, надо подцепить в проект библиотечку-обёртку функций user32.
-------------------- ![]() ![]() |
|||
|
||||
| Pavel_V |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
а можно поподробнее, если не сложно куда и что подключить?
почему из MSVC++ такое приложение компилится без ошибок и запускается, (ну не совсем такое, просто минимальное приложение с вызовом этой же функции) а из командной строки - нет? |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
в визуал студие это по дефолту ;) |
|||
|
||||
| Pavel_V |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
to v2v:
не врублюсь, причем здесь загрузка библиотеки из кода java? У меня с кодом на Си проблема, а не с кодом java. Я не могу скомпилить код библиотеки на Си, и java тут помоему не причем, хотя могу и ошибаться. |
|||
|
||||
| Pavel_V |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
to v2v:
не врублюсь, причем здесь загрузка библиотеки из кода java? У меня с кодом на Си проблема, а не с кодом java. Я не могу скомпилить код библиотеки на Си, и java тут помоему не причем, хотя могу и ошибаться. ==== Модераторы, удалите пожалуйста повторное сообщение Это сообщение отредактировал(а) Pavel_V - 21.2.2008, 21:02 |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 8 Всего: 56 |
ну вот такой же лоад либрари тебе надо сделать в С++ коде
|
|||
|
||||
| w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Да там статическая линковка, какой ещё load. Надо в командной строке указать библиотеку, соответствующую user32. В среде это наверняка делается автоматически.
Это сообщение отредактировал(а) w1nd - 21.2.2008, 22:39 -------------------- ![]() ![]() |
|||
|
||||
| Pavel_V |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 19.2.2008 Репутация: нет Всего: нет |
все разобрался. все работает как часы.
нужно было добавить в cи коде дописать #pragma comment(lib,"user32.lib") или в консоли /link user32.lib |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |