Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Под какой .NET Fraimwork создавать такой проект, создание dll по обработке строк 
:(
    Опции темы
Suppir
Дата 22.1.2011, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Привет!

Мне необходимо для программы на AutoIt создать DLL, которая будет выполнять обработку строк:
обычные поиск-замена, поиск и замена с регулярными выражениями, разрезание и склейка строк.

Т.е. в одной директории с моей программой будет лежать dll, я буду вызывать из нее функции с помощью dllCall().


Решил написать dll на c#; скачал SharpDevelop 3.2. Возникло несколько вопросов:

1) обязательно ли у пользователя должен быть .NET Framework для использования dll, написанной на c# ?
2) какую минимальную версию .NET Framework можете посоветовать для сабжевых задач?
3) подкиньте, пожалуйста, ссылки на простые примеры по созданию DLL на c#. 


p.s.  в названии темы неправильно написал:  .NET Framework, конечно smile


Это сообщение отредактировал(а) Suppir - 22.1.2011, 19:48
PM MAIL   Вверх
wester
Дата 22.1.2011, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PM MAIL   Вверх
Suppir
Дата 22.1.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сразу вопрос. Создал class library. Пишу в c# :

Код

using System;
using System.Collections.Generic;

namespace summ
{
    public class MyClass
    {
    
        public static int Add(int a, int b)
        {
            return (a + b);
        }
    }
}


Создаю dll. Потом пишу в AutoIt

Код

$res = DllCall("summ.dll", "int", "MyClass.Add", "int", "2", "int", "5")
ConsoleWrite($res[0])


Но выдает ошибку. Может быть что-то неправильно делаю при создании dll ?

PM MAIL   Вверх
kosmonaFFFt
Дата 23.1.2011, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Скорее всего вам требуется не .NET сборка, которую вы создаете, а нормальная native .dll, которую на С# (и вообще .NET) создать нельзя... Надо вам создавать native .dll...


--------------------
user posted image
PM MAIL ICQ   Вверх
Suppir
Дата 23.1.2011, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



kosmonaFFFt, 

подскажите, пожалуйста, на чем можно реализовать следующую задачу:

- создать нативный dll (не требующий регистрации в системе пользователя), в котором будут функции по обработке текста 
(обычные поиск-замена, поиск и замена с регулярными выражениями PCRE, разрезание и склейка строк). Необходимо, чтобы эти функции работали как можно шустрей.

Из языков владею Perl (на нем эти функции реализуются элементарно и работают быстро, но на Perl невозможно создать dll, и каждому пользователю придется устанавливать интерпретатор, то невозможно)
и AutoIt (тоже скриптовый язык, можно создавать exe-ники, которые запускается у любого пользователя windows, но язык слишком медленный для обработки больших массивов данных).

Неужели для решения этой задачи кроме с++ и дельфи никаких альтернатив нет? :( 




PM MAIL   Вверх
jonie
Дата 23.1.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата(Suppir @  23.1.2011,  13:23 Найти цитируемый пост)

Неужели для решения этой задачи кроме с++ и дельфи никаких альтернатив нет? :( 

ну можно на assembler (MASM) нарисовать нативную длл-ку например...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Suppir
Дата 23.1.2011, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



jonie, я надеюсь, вы шутите насчет ассемблера.

Это сообщение отредактировал(а) Suppir - 23.1.2011, 19:50
PM MAIL   Вверх
jonie
Дата 24.1.2011, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата(Suppir @  23.1.2011,  19:48 Найти цитируемый пост)
jonie, я надеюсь, вы шутите насчет ассемблера.

чей-та? Например:
Код

файл KeyHook.def
LIBRARY KeyHook
EXPORTS 
KeyboardProc
InstallHook
UninstallHook


Код

;file KeyHook.asm
.386
.model flat,stdcall
option casemap:none
include    f:\masm32\include\windows.inc
include    f:\masm32\include\kernel32.inc
includelib f:\masm32\lib\kernel32.lib
include    f:\masm32\include\user32.inc
includelib f:\masm32\lib\user32.lib
;======================================================
;.const
;   WM_KEYBOARDHOOK equ WM_USER+6
;======================================================
.data
 hInstance dd 0
;======================================================
.data?
   hHook dd ?
   hWnd dd ?
   WM_KEYBOARDHOOK ?
;======================================================
.code
  DllEntry proc hInst:HINSTANCE, reason:DWORD, reserved1:DWORD
       .if reason==DLL_PROCESS_ATTACH
           push hInst
           pop hInstance
       .endif
       mov  eax,TRUE
       ret
  DllEntry Endp

  KeyboardProc proc nCode:DWORD,wparam:DWORD,lparam:DWORD
       invoke CallNextHookEx,hHook,nCode,wparam,lparam
      invoke PostMessage,hWnd,WM_KEYBOARDHOOK,wparam,lparam
       xor eax,eax
       ret
   KeyboardProc endp


   InstallHook proc hwnd:DWORD, HOOK_MES:DWORD
      push HOOK_MES
      pop WM_KEYBOARDHOOK
      
       push hwnd
       pop hWnd

       invoke SetWindowsHookEx,WH_KEYBOARD,addr KeyboardProc,hInstance,NULL
       mov hHook,eax
       ret
   InstallHook endp


   UninstallHook proc
       invoke UnhookWindowsHookEx,hHook
       ret
   UninstallHook endp

End DllEntry



Compile:
Код

ml /c /coff /Cp Keyhook.asm
link /section:.bss,S /DLL /DEF:Keyhook.def /SUBSYSTEM:WINDOWS /MERGE:.idata=.texta /MERGE:.data=.texta /MERGE:.rdata=.texta /SECTION:.texta,EWR /IGNORE:4078 Keyhook.obj
del *.obj
pause



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
neutrino
Дата 30.1.2011, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(kosmonaFFFt @  23.1.2011,  08:37 Найти цитируемый пост)
Скорее всего вам требуется не .NET сборка, которую вы создаете, а нормальная native .dll, которую на С# (и вообще .NET) создать нельзя... 

В стандартном пакете разработчика вместе со студией есть тулза позволяющая компилить в нативный код.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
jonie
Дата 30.1.2011, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



neutrino, ngen-то? И как он поможет?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
neutrino
Дата 31.1.2011, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Цитата(neutrino @  30.1.2011,  16:55 Найти цитируемый пост)
нормальная native .dll, которую на С# (и вообще .NET) создать нельзя... 




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Suppir
Дата 31.1.2011, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята, так можно в .NET создать нативную dll или нет? А то чую, придется free pascal изучать...
PM MAIL   Вверх
jonie
Дата 31.1.2011, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Suppir, нельзя.
Я бы на вашем месте сделал COM объект на C#-пе и использовал его (уверен что это возможно из AutoIt)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

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


 




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


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

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