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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> переименовать функцию в DLL с JNA 
:(
    Опции темы
qpile
Дата 3.2.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Java не поддержживает @ в имени функции..Как мне ее переименовать??В нете НИ ОДНОГО примера нет!
Код

  public interface TransToQuik  extends Library{

public int  _TRANS2QUIK_CONNECT@16(String lpcstrConnectionParamsString, LongByReference pnExtendedErrorCode, String lpstrErrorMessage, int dwErrorMessageSize);

 }

  LongByReference pnExtendedErrorCode= new LongByReference();
    String Error;
    int len;
    int FunctionResult=0;
   
    String lpstrErrorMessage="";
    int dwErrorMessageSize=0;
    TransToQuik lib = (TransToQuik) Native.loadLibrary ("D://java project//Robot//TRANS2QUIK.dll",TransToQuik.class);

   FunctionResult=lib._TRANS2QUIK_CONNECT@16("D://QUIK5.15//",pnExtendedErrorCode,lpstrErrorMessage,dwErrorMessageSize);

PM MAIL   Вверх
casey
Дата 4.2.2010, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вот тебе длл с переименованными функциями:                         _TRANS2QUIK_CONNECT@16       --->             TRANS2QUIK_CONNECT

не знаю как загружать файлы на форум, выкладываю тут:       hart2dde.narod.ru/TRANS2QUIK.dll
PM MAIL WWW   Вверх
qpile
Дата 4.2.2010, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо !БИблу цепляет! Но хотелось бы все таки разобратсьяс переименованием

Вот пишу такой код..
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Евгений
 */

import com.sun.jna.*;
import java.util.*;

import com.sun.jna.win32.StdCallFunctionMapper;
import java.lang.reflect.*;



public class NewClass {

   public interface Kernel32 extends Library {
       public boolean Beep1(int FREQUENCY, int DURATION);
       public void Sleep1(int DURATION);
   }




   public static void main(String[] args) {
       
Map options = new HashMap();

options.
    put(
        Library.OPTION_FUNCTION_MAPPER, 
        new StdCallFunctionMapper() {
            public String getFunctionName(NativeLibrary library, Method method) {
              
                if (method.getName().equals("Beep")){
                 
                    method.setName("beep1");
                }
           
                return super.getFunctionName(library, method);
            }
        }
    );



       Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
    lib.Beep1(698, 1500);
    lib.Sleep1(500);
    lib.Beep1(698, 1500);
   
   }
}


Хочу переименовать BEEP.. Но ругается на SETNAME
PM MAIL   Вверх
casey
Дата 8.2.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



По ходу так нужно:


 
Код


package javaapplication2;

import com.sun.jna.*;
import com.sun.jna.Native;
import java.util.HashMap;


public class Main{
   public interface Kernel32 extends Library {
       public boolean Beep123(int FREQUENCY, int DURATION);
       public void Sleep123(int DURATION);
   }

    public static void main(String[] args) {

       HashMap optionMap = new HashMap();
        optionMap.put("Sleep123","Sleep"); 
        optionMap.put("Beep123","Beep"); 

   Kernel32 INSTANSE = (Kernel32)Native.loadLibrary ("c:\\WINNT\\system32\\kernel32.dll ",Kernel32.class,optionMap);


int i=25;
   INSTANSE.Beep123(3290/i, 400);
   INSTANSE.Beep123(4940/i, 400);
   INSTANSE.Beep123(3920/i, 900);
   INSTANSE.Sleep123(200);

   INSTANSE.Beep123(3290/i, 400);
   INSTANSE.Beep123(4940/i, 400);
   INSTANSE.Beep123(4150/i, 250);
   INSTANSE.Beep123(3920/i, 800);
   INSTANSE.Sleep123(400);

   INSTANSE.Beep123(3290/i, 400);
   INSTANSE.Beep123(4940/i, 400);
   INSTANSE.Beep123(3920/i, 500);
   INSTANSE.Sleep123(300);
   INSTANSE.Beep123(4940/i, 400);
   INSTANSE.Beep123(3290/i, 700);
   INSTANSE.Sleep123(600);
    }

}




Deep Purple Forever!!!!!   -  подобрал как смог

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

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

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


 




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


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

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