Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
#1

Интеграция кода c++ в java - C++

15.05.2013, 18:55. Просмотров 1964. Ответов 3
Метки нет (Все метки)

Вот решил переписать пример с одной книги где показано как в код java вставить код c++. Но почему-то много ошибок, не подскажете почему?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include "A.h"
#include "jni.h"
 
JNIEXPORT void JNICALL Java_A_show(JNIEnv *env, jobject obj)
{
    jclass cls;
    jfieldID fid;
    jint i;
    cls = (*env)->GetObjectClass(env,obj);
    fid = (*env)->GetFieldID(env,cls,"i","I");
 
    i = (*env)->GetIntField(env,obj,fid);
    std::cout<<"i = "<<i;
    (*env)->SetIntField(env,obj,fid,2*i);
    std::cout<<std::endl<<"i = "<<i;
}
A.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "jni.h"
/* Header for class A */
 
#ifndef _Included_A
#define _Included_A
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     A
 * Method:    show
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_A_show
  (JNIEnv *, jobject);
 
#ifdef __cplusplus
}
#endif
#endif
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class A
{
    int i;
    public static void main(String [] args)
    {
        A a = new A();
        a.i = 10;
        a.show();
    }
    public native void show();
 
    static{
        System.loadLibrary("A");
    }
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
------ Построение начато: проект: temp, Конфигурация: Debug Win32 ------
  main.cpp
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(10): error C2819: тип "JNIEnv_" не имеет перегруженный "operator ->"
          c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\jni.h(782): см. объявление "JNIEnv_"
          возможно, имеется в виду "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(10): error C2232: ->JNIEnv_::GetObjectClass: левый операнд имеет тип "struct", используйте "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(10): error C2065: env: необъявленный идентификатор
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(11): error C2819: тип "JNIEnv_" не имеет перегруженный "operator ->"
          c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\jni.h(782): см. объявление "JNIEnv_"
          возможно, имеется в виду "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(11): error C2232: ->JNIEnv_::GetFieldID: левый операнд имеет тип "struct", используйте "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(13): error C2819: тип "JNIEnv_" не имеет перегруженный "operator ->"
          c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\jni.h(782): см. объявление "JNIEnv_"
          возможно, имеется в виду "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(13): error C2232: ->JNIEnv_::GetIntField: левый операнд имеет тип "struct", используйте "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(15): error C2819: тип "JNIEnv_" не имеет перегруженный "operator ->"
          c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\jni.h(782): см. объявление "JNIEnv_"
          возможно, имеется в виду "."
c:\documents and settings\admin\мои документы\visual studio 2010\projects\temp\temp\main.cpp(15): error C2232: ->JNIEnv_::SetIntField: левый операнд имеет тип "struct", используйте "."
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 18:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Интеграция кода c++ в java (C++):

Перевод кода с Java на С++ - C++
Такой вот код нужно перевести. import java.io.*; import java.math.BigInteger; import java.util.*; public class Main { /** *...

Конвертация кода из С++ в Java - C++
Помогите пожалуйста с переводом кода из с++ в Java. В Java не разбираюсь к сожалению. Заранее спасибо. #include &lt;stddef.h&gt; #include...

Перевод кода с Java на С++ - C++
Помогите перевести следующий код с Java на C++: import java.io.File; import java.io.IOException; import java.util.Scanner; ...

Конвертация кода из с++ в java - C++
Доброго времени суток. Перейду сразу к сути. Я затеял перевод кода из c++ в java, код простой, думал, что труда мне это не составит, однако...

Перевод кода из java в С++ - C++
Делаю попытку создать хоть какую то стратегию http://russianaicup.ru/post/2#comment-926 ,помогите перевести код на с++. Или хотя бы как...

Перевод кода с Java - C++
Здравствуйте! Есть кусок кода на java, в котором идет работа с map, пробовал переписать самостоятельно, но ничего хорошего из этого не...

3
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.05.2013, 20:45 #2
Why so seriouS, пишете длл-ку. Экспортируете из нее функции. Затем подключаете ее(как в джава это делается - не знаю.) Поэтому вам в раздел джава нужно.
0
Kastaneda
Нарушитель
Эксперт С++
4664 / 2870 / 229
Регистрация: 12.12.2009
Сообщений: 7,299
Записей в блоге: 2
Завершенные тесты: 1
15.05.2013, 20:52 #3
Вот статейка на хабре на эту тему.
1
Why so seriouS
44 / 44 / 1
Регистрация: 12.03.2013
Сообщений: 167
15.05.2013, 21:08  [ТС] #4
Цитата Сообщение от go Посмотреть сообщение
Why so seriouS, пишете длл-ку. Экспортируете из нее функции.
Вот как раз вот это и должно быть dll.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include "A.h"
#include "jni.h"
 
JNIEXPORT void JNICALL Java_A_show(JNIEnv *env, jobject obj)
{
    jclass cls;
    jfieldID fid;
    jint i;
    cls = (*env)->GetObjectClass(env,obj);
    fid = (*env)->GetFieldID(env,cls,"i","I");
 
    i = (*env)->GetIntField(env,obj,fid);
    std::cout<<"i = "<<i;
    (*env)->SetIntField(env,obj,fid,2*i);
    std::cout<<std::endl<<"i = "<<i;
}

Но почему-то компиляция не проходит, сами видите сколько ошибок..
0
15.05.2013, 21:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 21:08
Привет! Вот еще темы с ответами:

Перенос кода с java на с++ - C++
Всем привет я навичок помогите перевести этот код с java на с++ import java.util.Random; public class Runner { ...

Перевод кода с Java - C++
Здравствуйте! Есть код на java, который работает недостаточно быстро, для его ускорения решил переписать его на c++, вот что вышло,...

Перевод кода с Java на С++ - C++
Помогите перевести следующий код с Java на C++: * Вызывающий класс*/ public class Main{ public static void main(String args){ ...

Перевести кода с языка Java - C++
Помогите пожалуйста, перевести из java в с++. Будьте добры. Вот код java: package beginning; import java.util.Scanner; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru