Плагин к Adobe Fotoshop на С#
От: LameFox Россия http://vectools.com
Дата: 09.07.02 09:36
Оценка:
Привет !

Может кто посоветует, насколько реально писать плагины к фотошопу на С#.
Плагин представляет из себя DLL-ку с внешней функцией,
к которой обращается фотошоп при обращении к плагину.

void ENTRYPOINT (....)
{
......
}


Мне как минимум не понятно, как можно такую функцию описать в библиотеке в C#.
Т.е. в VC++ эта функция экспортируется в DEF файле:

LIBRARY      MyFilter

DESCRIPTION 'Photoshop filter'

EXPORTS
             ENTRYPOINT   @1


И после компиляции библиотеки можно ее увидеть как минимум с помощью "View Dependencies",
а вот как сделать аналогичную библиотеку с помощью C# не понятно. Т.е. DLL-ки то собираются,
но с помощью "View Dependencies" ничего увидеть не удается...

Буду благодарен любой информации

Спасибо
Re: Плагин к Adobe Fotoshop на С#
От: Mishka.NET Норвегия  
Дата: 09.07.02 10:20
Оценка:
Если очень хочется, то делай DLL на С# и потом вызывай её из другой DLL, написанной на MC++, в которой как раз и экспортируешь функцию ENTRYPOINT.
#using <mscorlib.dll>
#using "CSharp.dll"

extern "C"
{
  void __declspec(dllexport) ENTRYPOINT(...)
  {
     MyNamespace::MyClass::MyFunc();
  }
}


а в CSharp.dll
namespace MyNamespace
{
  public class MyClass
  {
    public static void MyFunc()
    {
      MessageBox.Show("Someone calls ENTRYPOINT function!");
    }
  }
}
Re: Плагин к Adobe Fotoshop на С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.02 15:27
Оценка:
Здравствуйте LameFox, Вы писали:

LF>Мне как минимум не понятно, как можно такую функцию описать в библиотеке в C#.

LF>Т.е. в VC++ эта функция экспортируется в DEF файле:

А ты никак ее и не напишиш. Если очень хочется пользоваться C#-ом, то создай длл-ку на MC++ где реализуй свою функци, а из нее уже вызывай управляемый код.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Плагин к Adobe Fotoshop на С#
От: Аноним  
Дата: 25.07.02 10:25
Оценка:
Здравствуйте VladD2, Вы писали:

VD>Здравствуйте LameFox, Вы писали:


LF>>Мне как минимум не понятно, как можно такую функцию описать в библиотеке в C#.

LF>>Т.е. в VC++ эта функция экспортируется в DEF файле:

VD>А ты никак ее и не напишиш. Если очень хочется пользоваться C#-ом, то создай длл-ку на MC++ где реализуй свою функци, а из нее уже вызывай управляемый код.


Интересно, почему нельзя экспортировать функции из C#,
т.е. исходя из каких соображений это не реализовали ? :???:
Re[3]: Плагин к Adobe Fotoshop на С#
От: Mishka.NET Норвегия  
Дата: 25.07.02 11:12
Оценка:
Здравствуйте Аноним, Вы писали:

А>Интересно, почему нельзя экспортировать функции из C#,

А>т.е. исходя из каких соображений это не реализовали ?

0. А зачем?
1. Функции всегда принадлежат какому-то классу. С# в отличии от CLR не поддерживает глобальных функций.
2. Сигнатура функций в С# совсем не та же, что и в С++.
3. Функции в С# dll содержаться в ввиде IL, а не ассемблера.
ну и т.д.
Re[2]: Плагин к Adobe Fotoshop на С#
От: Аноним  
Дата: 25.07.02 14:16
Оценка:
Здравствуйте Mishka.NET, Вы писали:

M.NET>Если очень хочется, то делай DLL на С# и потом вызывай её из другой DLL, написанной на MC++, в которой как раз и экспортируешь функцию ENTRYPOINT.

M.NET>
M.NET>#using <mscorlib.dll>
M.NET>#using "CSharp.dll"

M.NET>extern "C"
M.NET>{
M.NET>  void __declspec(dllexport) ENTRYPOINT(...)
M.NET>  {
M.NET>     MyNamespace::MyClass::MyFunc();
M.NET>  }
M.NET>}
M.NET>


M.NET>а в CSharp.dll

M.NET>
M.NET>namespace MyNamespace
M.NET>{
M.NET>  public class MyClass
M.NET>  {
M.NET>    public static void MyFunc()
M.NET>    {
M.NET>      MessageBox.Show("Someone calls ENTRYPOINT function!");
M.NET>    }
M.NET>  }
M.NET>}
M.NET>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.